如果其他作品正好与我想要的相反

以下代码是控制器的一部分,它可以切换post的“喜欢”状态。

它是这样工作的:

  1. 首先,用户在post上查找任何喜欢的东西。
  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} 

如果不存在,则返回

 [] 

为了testing目的,我改变了我的代码以简化工作

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

现在都说结果+'删除'

从文档 (我的重点):

所有的值都是真实的,除非它们被定义为伪造(即除了0“”nullundefinedNaN )。

一个空的数组( [] )不在上面的列表中,所以它是真的

您可能想要返回null