服务器端流星 collections 在客户端不可见
Server side meteor collections aren't visible on client side
我有collection在服务器端发布,使用iron router的waitOn订阅这些collection。但是,在客户端,我永远看不到对服务器端定义的 collection 的任何引用。我可以访问它们的唯一方法是在客户端定义 collection (devices = new Meteor.Collection('devices')),但我没有看到有人在他们的示例中这样做在线的。这是代码:
客户代码:
Router.route('/devices', {
waitOn: function() {
return [
Meteor.subscribe('devices', Meteor.user()._id),
];
},
action: function() {
this.render();
}
});
服务器端:
Devices = new Mongo.Collection("devices");
Devices.allow({
'insert': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
'update': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
});
Meteor.publish('devices', function(id) {
return Devices.find({accountId: id});
});
我已经删除了自动发布,从在线示例中,我应该只能引用 Devices.find({})。相反,我必须使用 devices = new Meteor.Collection('devices') 这会导致问题,因为如果我再次调用它,它会说我已经有一个 collection 调用的设备。有谁知道为什么我不能引用设备?
您不能在客户端引用它的原因是您没有将集合提供给客户端。
在服务器端保留 .allow
和 .publish
方法,但将您的集合创建移动到 lib 文件夹以使其在客户端和服务器上都可用。
/lib/collections.js:
Devices = new Mongo.Collection("devices");
我有collection在服务器端发布,使用iron router的waitOn订阅这些collection。但是,在客户端,我永远看不到对服务器端定义的 collection 的任何引用。我可以访问它们的唯一方法是在客户端定义 collection (devices = new Meteor.Collection('devices')),但我没有看到有人在他们的示例中这样做在线的。这是代码:
客户代码:
Router.route('/devices', {
waitOn: function() {
return [
Meteor.subscribe('devices', Meteor.user()._id),
];
},
action: function() {
this.render();
}
});
服务器端:
Devices = new Mongo.Collection("devices");
Devices.allow({
'insert': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
'update': function (userId, doc) {
if (userId === doc.accountId) {
return true;
}
return false;
},
});
Meteor.publish('devices', function(id) {
return Devices.find({accountId: id});
});
我已经删除了自动发布,从在线示例中,我应该只能引用 Devices.find({})。相反,我必须使用 devices = new Meteor.Collection('devices') 这会导致问题,因为如果我再次调用它,它会说我已经有一个 collection 调用的设备。有谁知道为什么我不能引用设备?
您不能在客户端引用它的原因是您没有将集合提供给客户端。
在服务器端保留 .allow
和 .publish
方法,但将您的集合创建移动到 lib 文件夹以使其在客户端和服务器上都可用。
/lib/collections.js:
Devices = new Mongo.Collection("devices");