以下代码是控制器的一部分,用于切换帖子的“喜欢”状态。
它的工作原理如下:
以下是代码:
// 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")
};
现在两人都说结果+'已删除'
答案 0 :(得分:4)
来自docs(我强调):
除非将它们定义为假的,否则所有值都是真实的(即除了 false , 0 ,"" , null , undefined , NaN )。
空数组([]
)不在上面的列表中,所以 truthy 。
您可能希望返回null
。