假设我写道:
new Meteor.Collection("foos");
new Meteor.Collection("bars");
Run Code Online (Sandbox Code Playgroud)
是否有用于按名称访问这些集合的API?喜欢的东西Meteor.Collection.get(name),在这里name是"foos"还是"bars"?我知道我可以写类似的东西
var MyCollections = {
foos: new Meteor.Collection("foos");
bars: new Meteor.Collection("bars");
}
Run Code Online (Sandbox Code Playgroud)
然后使用MyCollections[name],但我更愿意使用现有的API(如果存在).
小智 15
基于Shane Donelley的mongoinspector https://github.com/shanedonnelly1/mongoinspector
getCollection = function (string) {
for (var globalObject in window) {
if (window[globalObject] instanceof Meteor.Collection) {
if (globalObject === string) {
return (window[globalObject]);
break;
};
}
}
return undefined; // if none of the collections match
};
Run Code Online (Sandbox Code Playgroud)
c.c*_*ier 12
我刚刚找到了这个软件包:https://github.com/dburles/mongo-collection-instances/
它允许你
Foo1 = new Mongo.Collection('foo'); // local
Foo2 = new Mongo.Collection('foo', { connection: connection });
Mongo.Collection.get('foo') // returns instance of Foo1
Mongo.Collection.get('foo', { connection: connection });
// returns instance of Foo2
Run Code Online (Sandbox Code Playgroud)
希望它会有所帮助
mal*_*hal 11
此功能在2016年2月添加到Meteor:"提供一种从客户端的商店访问集合的方法"
它的工作原理如下:
Meteor.connection._stores['tasks']._getCollection();
我使用它如下使用javascript控制台测试插入:
Meteor.connection._stores['tasks']._getCollection().insert({text:'test'});
对于插入,它需要insecure仍然安装包,否则获得访问被拒绝的消息.
小智 3
据我在collection.js源代码中看到,一旦在服务器上初始化了现有的 Collection,目前就无法在 api 中按名称获取现有的 Collection。添加该功能可能并不难。
那么,为什么不分叉 Meteor 并提交补丁或创建一个智能包并分享它,我确信还有其他人想要相同的功能。