我有一个可以保存餐馆的按钮。在下面的方法中,我试图找出三件事:
代码是:
'saveRestaurant': function(restId){
check('restId', String);
if(Meteor.userId())
var hasSaved = SavedRestaurants.findOne({userRefId: Meteor.userId()});
var isSaved = SavedRestaurants.findOne({userRefId: Meteor.userId(),savedRestaurants: {$in: [restId]}});
if(isSaved){
console.log('isSaved', hasSaved._id);
return SavedRestaurants.upsert(
hasSaved._id,
{$pull: { savedRestaurants: restId}}
);
}
else {
if (!hasSaved) {
console.log('!hasSaved');
return SavedRestaurants.insert(
{userRefId: Meteor.userId()},
{$addToSet: {savedRestaurants: restId}}
);
} else {
console.log('hasSaved && !isSaved', hasSaved._id);
return SavedRestaurants.upsert(
hasSaved._id,
{$addToSet: {savedRestaurants: restId}}
);
}
}
}
在服务器控制台上,我得到:
isSaved oYcsPz6ieoKrBMNkv
hasSaved && !isSaved oYcsPz6ieoKrBMNkv
这是预期的,但在浏览器控制台上我总是得到:
!hasSaved
按钮未显示预期的更改状态。 (已保存,未保存) 方法文件位于lib文件夹中。 (客户机/服务器)
所以,我猜这里有一个“循环”会覆盖一些东西,但我不明白 为什么会发生这种情况?我该如何解决?