Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子组件上的订阅不在ReactJS中工作_Reactjs_Meteor_React Router - Fatal编程技术网

子组件上的订阅不在ReactJS中工作

子组件上的订阅不在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+React应用程序中创建了一个发布(在服务器上)和订阅(在客户端)。我的问题是,我无法接收发布返回的数组。我在发布中使用了console.log,它记录订阅密钥和选项。我还检查了返回前的文件,它是正确的。但在客户端,仍然无法获取文档数组

这是我的componentDidMount代码

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()的结果传递给组件容器中的道具,因此需要在订阅之外捕获结果。

从文档:,您这样做了吗?我将结果传递给组件容器中的道具,但仍然没有收到任何文档。