流星本地服务器可以访问数据库,但客户端不能



我是流星的新手。因此,我想从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());
});

最新更新