繁体   English   中英

如何将运算符分配给变量

[英]How can I assign a operator to variable

我正在处理图像的相似部分。 用户喜欢图像时,会将userID推送到mongodb中的数组。 当用户不喜欢图像时,它将从数组中删除userID 我正在尝试使用$addToSet$pull做到这一点。

问题:如何在一个块中完成此操作,而不是为这两个编写两个单独的粗体? 目前,我正在使用变量opr但无法正常工作。 我该如何运作?

if(likeAction == "like"){
    var opr          = '$addToSet'
}
else if(likeAction == "unlike"){
    var opr          = '$pull'
}

Like.update( 
    { imageID: imageID }, 
    { opr : { userIDs: userID } },
    function(err){
        if(!err){
            Like.findOne({imageID : imageID}, function(err,like){
                image.likeCount      = like.userIDs.length
                image.save(function(err){
                    if(!err){
                        return res.send({
                            status: {
                                error: 0,
                                message: "Successful"
                            }
                        })
                    }
                })
            })
        }
    }
);

我认为这应该可以结合两个查询并解决opr问题:

var update = {};
if (likeAction === 'like'){
  update.$addToSet = { userIDs: userID };
  update.$inc      = { likeCount : 1 };
} else if (likeAction === 'unlike'){
  update.$pull  = { userIDs: userID };
  update.$inc   = { likeCount : -1 };
}

Like.update({ imageID: imageID }, update, ...);

您可以这样做:

var opr, updateCommande = {};

if(likeAction == "like"){
    opr          = '$addToSet'
}
else if(likeAction == "unlike"){
    opr          = '$pull'
}

updateCommande[opr]= { userIDs: userID }

Like.update( 
    { imageID: imageID }, 
    updateCommande,
    function(err){
        if(!err){
            Like.findOne({imageID : imageID}, function(err,like){
                image.likeCount      = like.userIDs.length
                image.save(function(err){
                    if(!err){
                        return res.send({
                            status: {
                                error: 0,
                                message: "Successful"
                            }
                        })
                    }
                })
            })
        }
    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM