MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tạo bộ sưu tập Meteor mới một cách nhanh chóng

Tôi không hoàn toàn chắc chắn rằng điều này sẽ hoạt động:

Bạn cần nó thành hai phần, phần đầu tiên để tải các bộ sưu tập mà bạn đã thiết lập trước đó (trên cả máy khách và máy chủ)

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

Và bạn cần một chút để thêm các bộ sưu tập trên máy chủ:

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

Và bạn cần tạo chúng trên máy khách:

//Create the collection:

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

Một lần nữa, tất cả điều này đều chưa được kiểm tra nên tôi chỉ hy vọng nó hoạt động.

CHỈNH SỬA

Có lẽ bên dưới sẽ hoạt động, tôi đã thêm một số kiểm tra để xem liệu bộ sưu tập có tồn tại trước không. Làm ơn, bạn có thể chạy meteor reset không trước khi bạn sử dụng nó để sắp xếp lỗi từ đoạn mã trên:

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

Ngoài ra, hãy đảm bảo rằng tên của bạn được thoát bằng javascript.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bảo mật cơ sở dữ liệu 101:Hiểu đặc quyền truy cập cơ sở dữ liệu

  2. Hướng dẫn cấu hình bộ cân bằng tải trong cụm phân chia MongoDB

  3. heroku mongohq và mongoid Mongo ::ConnectionFailure

  4. MongoDB C # Driver - Bỏ qua các trường trên ràng buộc

  5. Tại sao trình điều khiển nút MongoDB tạo hồ sơ cá thể bị lỗi bị phá hủy?