升级到0.5.9之后的某些原因我遇到的问题是服务器端似乎正确地发送了所有内容,但是客户端说它没有收到任何内容。
//服务器:
Meteor.publish("orders", function (ordersQueryParams) {
console.log("orders publish: " + JSON.stringify(ordersQueryParams));
if (this.userId && ordersQueryParams){
console.log("orders collection: " + Orders.find({"customer._id": this.userId}, ordersQueryParams).count());
return Orders.find({"customer._id": this.userId}, ordersQueryParams);
}
});
//客户端:
var ordersPreferences = {
table: {
size: 10
},
query: {
sort: {createdDate:-1},
skip : 0,
limit : 10
}
};
Session.set("ordersPreferences", ordersPreferences);
Meteor.autorun(function(){
var ordersPreferences = Session.get("ordersPreferences");
console.log('subscribing to orders');
Meteor.subscribe("orders", ordersPreferences.query);
}
//两个:
Orders = new Meteor.Collection("orders");
Deps.autorun(function(){
if (Meteor.isServer)
console.log("on server orders count is " + Orders.find().count());
if (Meteor.isClient)
console.log("on client orders count is " + Orders.find().count());
});
服务器日志:
on server orders count is 26
orders publish: {"sort":{"createdDate":-1},"skip":0,"limit":10}
orders collection: 26
客户日志:
subscribing to orders
on client orders count is 0
为什么服务器说有 26 文档,但客户坚持 0 ?
这让我疯狂:(
答案 0 :(得分:0)
我发现了问题:
我正在“等待”我的Meteor.user()
变得可用并且有autorun
:
Meteor.autorun(function(handle){
var ordersPage = new OrdersPage();
if (Meteor.user()) {
ordersPage.init();
ordersPage.autorun();
handle.stop();
}
});
if (Meteor.user()) {
return "orders";
}
找到Meteor.user()
后,此功能无需运行,因此我有handle.stop()
。
显然,0.5.9 handle.stop()
不仅会停止直接autorun
,还会停止下面的所有内容(包括收藏)。
可能是Meteor中引入的错误...或者可能是新功能。