MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Tworzenie nowych kolekcji Meteor w locie

Nie jestem do końca pewien, czy to zadziała:

Potrzebujesz go w dwóch częściach, pierwszy do załadowania skonfigurowanych wcześniej kolekcji (zarówno na kliencie, jak i na serwerze)

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);
})'

I potrzebujesz trochę, aby dodać kolekcje na serwerze:

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

I musisz je utworzyć na kliencie:

//Create the collection:

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

Ponownie, to wszystko nie zostało przetestowane, więc po prostu próbuję, mam nadzieję, że zadziała.

EDYTUJ

Być może poniższe powinno zadziałać, dodałem kilka sprawdzeń, aby sprawdzić, czy kolekcja istnieje jako pierwsza. Czy możesz uruchomić meteor reset zanim użyjesz go do sortowania błędów z powyższego kodu:

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
       }
    }
  });
}

Upewnij się również, że twoje imiona są zabezpieczone kodem javascript.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie bez uwzględniania wielkości liter w Mongo

  2. Błąd przetwarzania JSON mongoexport

  3. Jak utworzyć indeks zagnieżdżony w MongoDB?

  4. Wyszukiwanie MongoDB, gdy obce pole jest tablicą obiektów

  5. MongoDB:Serwer wyświetla ostrzeżenia dotyczące uruchamiania „Kontrola dostępu dla bazy danych nie jest włączona”.