子组件上的订阅不在ReactJS中工作
我在MEteor+React应用程序中创建了一个发布(在服务器上)和订阅(在客户端)。我的问题是,我无法接收发布返回的数组。我在发布中使用了console.log,它记录订阅密钥和选项。我还检查了返回前的文件,它是正确的。但在客户端,仍然无法获取文档数组 这是我的componentDidMount代码子组件上的订阅不在ReactJS中工作,reactjs,meteor,react-router,Reactjs,Meteor,React Router,我在MEteor+React应用程序中创建了一个发布(在服务器上)和订阅(在客户端)。我的问题是,我无法接收发布返回的数组。我在发布中使用了console.log,它记录订阅密钥和选项。我还检查了返回前的文件,它是正确的。但在客户端,仍然无法获取文档数组 这是我的componentDidMount代码 Meteor.subscribe("messages",{},{},function(err){ console.log("err",err); console.log(Mes
Meteor.subscribe("messages",{},{},function(err){
console.log("err",err);
console.log(Messages.find().fetch());
});
这里不调用console.log
这是我的出版代码
if (Meteor.isServer) {
Meteor.publish('messages', function (key,option) {
console.log(key);
return Messages.find(key,option);
});
}
这里的console.log正在运行,而且我在返回之前检查了文档,结果是正确的
我在应用程序中也使用了react路由器。我为父组件添加路由。我的问题是在子组件中
我的代码有什么问题?或者如何解决这个问题?
我使用了msavin:mongol,但文档计数仍为0。我认为Meteor Chef正在推广一种很好的文件夹结构。如果您碰巧使用了它,只是为了确保您的服务器端操作到达服务器,这意味着它们被导入到服务器。仅共享我的一个项目的屏幕: register-api.js进一步向下导入到我的服务器文件夹的main.js中
其次,如果您在订阅之外执行console.log(Messages.find().fetch())会怎么样。您将其放入回调函数中,但实际上不应该存在。您通常要做的是将Messages.find().fetch()的结果传递给组件容器中的道具,因此需要在订阅之外捕获结果。从文档:,您这样做了吗?我将结果传递给组件容器中的道具,但仍然没有收到任何文档。