我是流星的新手。因此,我想从MongoDB的本地数据库访问数据。我在客户端文件夹中有client.js
Meteor.subscribe('Signal');
console.log(Data.find().fetch());
和我的服务器目录具有main.js
console.log(Data.find());
Meteor.publish('Signal', function() {
return Data.find().fetch();
});
服务器的控制台。log显示终端中的结果,但客户端没有显示任何Chrome的控制台
lib/i有collectons.js包含
Data = new Mongo.Collection('data');
我已经从Shell中检查了我的MongoDB,并使用所需的数据存在收集数据。我在做什么错?
您忘记了客户端上的Meteor.subscribe()
不是即时操作,并且出版将花费时间将文档填充到客户端。
幸运的是,Meteor.subscribe()
返回可用于确定订阅准备就绪的订阅手柄。
const handle = Meteor.subscribe('Signal');
Tracker.autorun(() => {
if (handle.ready()) {
// subscription is ready
console.log(Data.find().fetch());
}
});
另外,您可以将onReady
回调作为最后一个参数将其传递给Meteor.subscribe()
:
Meteor.subscribe('Signal', () => {
// subscription is ready
console.log(Data.find().fetch());
});