gpt4 book ai didi

node.js - if else 的工作与我想要的完全相反

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:58 24 4
gpt4 key购买 nike

以下代码是 Controller 的一部分,用于切换帖子的“喜欢”状态。

它的工作原理如下:

  1. 首先,它会查找用户对帖子的点赞。
  2. 如果不存在,则“保存”状态。
  3. 如果存在,请“删除”现有的点赞状态。

这里的代码是:

// api/posts
exports.postLikes = function(req,res){
var like = new Like({
postId: req.params.postId,
user: req.user._id
});
Like.find()
.and([
{user:req.user._id},
{postId:req.params.postId}
]) // check for existing likes
.exec(function(err, result){
if(!result){ // if there is no result
like.save(function(err){
if(err){res.send(err);}
Post.findById(req.params.postId, function(err,post){
if(err) return res.send(err);
post.likeId.push(like);
post.save(function(err){
if(err) return res.send(err);
res.json({status:'done'})
});
});
});
}else{ //if there is result
res.json({status:'deleted'}) // just says deleted for now
};
});
};

但是,当没有结果时,它会返回 {status:'deleted'} ;当已经有结果时,它会添加额外的点赞。

返回的结果与存储在 MongoDB 中的结果相同

{ _id: 555f4ee2f0ea4f8004690ba5,
postId: 555e649b3e5e24f0200f0f16,
user: 555e1c9fd5ec350421ec7cfa,
__v: 0,
created: Sat May 23 2015 00:44:34 GMT+0900}

如果不存在则返回

[]

为了测试目的,我更改了代码以使其工作更简单

if(result != null){
res.send(result + "deleted")
}else{
res.send(result + "added")
};

现在两者都显示结果+“已删除”

最佳答案

来自docs (我强调):

All values are truthy unless they are defined as falsy (i.e., except for false, 0, "", null, undefined, and NaN).

空数组 ([]) 不在上面的列表中,因此它是真实

您可能想返回 null

关于node.js - if else 的工作与我想要的完全相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30407528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com