我正尝试将我的服务器集合与我的客户端集合同步。如何同步Meteor.js上的客户端和服务器集合
在服务器上:
var JobLoopUsers = new Meteor.Collection("job-loop-users")
Meteor.publish("user-data", function(){
JobLoopUsers.findOne({meteorUserId : 1});
});
在客户端:
Meteor.subscribe("user-data");
JobLoopUsers = new Meteor.Collection("job-loop-users");
我使用meteor.call
在服务器上,当我做
插入服务器上的一些测试数据console.log(JobLoopUsers.find().fetch()[0])
它显示:
{meteorUserId: 1
testData: "My Test Data Here"}
当我的客户我刚得到一个空数组做
console.log(JobLoopUsers.find().fetch())
。
如何同步这两个集合?
流星文档说:
当您订阅一个记录集,它告诉服务器发送记录到客户端。客户端将这些记录存储在本地Minimongo集合中,并使用与要设置的集合参数相同的名称。 Meteor将对传入的属性进行排队,直到您在客户端上使用匹配的集合名称声明Meteor.Collection。
我需要做自动订阅吗?
在客户端仍然一无所获。也许我是错误地命名了一些东西?为了安全,我已经删除了autopublish包。 – ChickenFur
更新了我的答案,或许它的客户端是异步的,并且您正在尽快调用该函数 – Akshat
是的,我知道一个事实,问题在于此调用“Meteor.subscribe(”user-data“);> >不同步(尽管它看起来是同步的)......这意味着客户端上的“JobLoopUsers.find()。fetch())”行将在订阅完成后才会返回任何内容。这是流星的一个非常普遍的问题,我希望他们找到解决办法。 –