我正嘗試將我的服務器集合與我的客戶端集合同步。如何同步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())」行將在訂閱完成後纔會返回任何內容。這是流星的一個非常普遍的問題,我希望他們找到解決辦法。 –