gpt4 book ai didi

meteor - 如何在 Meteor.js 上同步客户端和服务器集合

转载 作者:行者123 更新时间:2023-12-04 05:12:53 25 4
gpt4 key购买 nike

我正在尝试将我的服务器集合与我的客户端集契约(Contract)步。

在服务器上:

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())

在客户端我只是得到一个空数组。

如何同步这两个集合?

meteor 文档说:

当您订阅记录集时,它会告诉服务器将记录发送给客户端。客户端将这些记录存储在本地 Minimongo 集合中,与要设置的集合参数同名。 Meteor 将对传入的属性进行排队,直到您在客户端上使用匹配的集合名称声明 Meteor.Collection。

我需要自动订阅吗?

最佳答案

这两个是实时自动同步的。可能发生的是您插入的数据没有 meteorUserId:1并且它没有发布给客户端,并且您正在搜索所有记录是否有meteorUserId:1或不。

要解决此问题,请尝试更改:

Meteor.publish("user-data", function(){
JobLoopUsers.find({});
});

除非出于某种原因需要更改订阅,否则您不必进行自动订阅

您也可以调用 console.log( JobLoopUsers.find().fetch())太快了,请尝试等待一两秒钟,将其替换为:
Meteor.setTimeout(function() { console.log( JobLoopUsers.find().fetch()) }, 3000);

关于meteor - 如何在 Meteor.js 上同步客户端和服务器集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14659289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com