MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създаване на нови колекции Meteor в движение

Не съм напълно сигурен, че това ще работи:

Нуждаете се от две части, първата за зареждане на колекции, които сте настроили преди (както на клиента, така и на сървъра)

var collections = {};
var mysettings = new Meteor.Collection('settings') //use your settings

//Startup
Collectionlist = mysettings.find({type:'collection'});

Collectionlist.forEach(function(doc) {
    collections[doc.name] = new Meteor.Collection(doc.name);
})'

И ви трябва малко, за да добавите колекциите на сървъра:

Meteor.methods({
    'create_server_col' : function(collectionname) {
       mysettings.insert({type:'collection', name: collectionname});
       newcollections[collectionname] = new Collection(collectionname);
       return true;
    }
});

И трябва да ги създадете на клиента:

//Create the collection:

Meteor.call('create_server_col', 'My New Collection Name', function(err,result) {
    if(result) {
        alert("Collection made");
    }
    else
    {
        console.log(err);
    }
}

Отново, всичко това е непроверено, така че просто го пробвам, надявам се, че работи.

РЕДАКТИРАНЕ

Може би по-долу трябва да работи, аз добавих няколко проверки, за да видя първо дали колекцията съществува. Моля, можете ли да стартирате meteor reset преди да го използвате, за да сортирате грешки от кода по-горе:

var collections = {};
var mysettings = new Meteor.Collection('settings')

if (Meteor.isClient) {
  Meteor.startup(function() {
    Collectionlist = mysettings.find({type:'collection'});

    Collectionlist.forEach(function(doc) {
        eval("var "+doc.name+" = new Meteor.Collection("+doc.name+"));
    });
  });
  Template.hello.greeting = function () {
    return "Welcome to testColl.";
  };

  var collectionname=prompt("Enter a collection name to create:","collection name")

  create_collection(collectionname);

  function create_collection(name) {
    Meteor.call('create_server_col', 'tempcoll', function(err,result) {
        if(!err) {
            if(result) {
                //make sure name is safe
                eval("var "+name+" = new Meteor.Collection('"+name+"'));
                alert("Collection made");
                console.log(result);
                console.log(collections);
            } else {
                alert("This collection already exists");
            }
        }
        else
        {
            alert("Error see console");
            console.log(err);
        }
    });
  }
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup
    Collectionlist = mysettings.find({type:'collection'});

    Collectionlist.forEach(function(doc) {
        collections[doc.name] = new Meteor.Collection(doc.name);
    });
  });

  Meteor.methods({
    'create_server_col' : function(collectionname) {
       if(!mysettings.findOne({type:'collection', name: collectionname})) {
        mysettings.insert({type:'collection', name: collectionname});

        collections[collectionname] = new Meteor.Collection(collectionname);

        return true;
       }
       else
       {
        return false; //Collection already exists
       }
    }
  });
}

Също така се уверете, че имената ви са екранирани в javascript.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. създаване и актуализиране на множество MongoDB документи в едно обаждане

  2. Автоматично увеличаване на последователността в mongodb с помощта на java

  3. Удостоверяването на MongoDB-CR не бе успешно

  4. Сериозен спад в производителността с MongoDB Change Streams

  5. MongoDB като услуга на Windows и настройка на replicaSet