为什么此方法控制台在服务器和客户端上打印不同的结果?

时间:2016-06-02 08:50:26

标签: javascript meteor

我有一个可以保存餐馆的按钮。在下面的方法中,我试图找出三件事:

  • 如果用户已有文档,
  • 如果此项目在列表中,
  • 与否。

代码是:

'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文件夹中。 (客户机/服务器)

所以,我猜这里有一个“循环”会覆盖一些东西,但我不明白 为什么会发生这种情况?我该如何解决?

0 个答案:

没有答案