1
以下代碼是控制器的一部分,它切換帖子的「喜歡」狀態。if if else與我想要的完全相反
它的工作原理是這樣的:
- 首先它看起來對後用戶的任何喜好。
- 如果不存在,則保存狀態。
- 如果存在,「刪除」現有的狀態。
下面是代碼爲:
// 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")
};
現在都說結果+'刪除'
這似乎不必要的複雜。如果所有這一切都是在切換帖子的狀態,那麼你應該只需要一個'if'' then''else'。 –
如果沒有給出「結果」評估爲零?例如,「找不到結果」這樣的字符串確實是* not *。 – usr2564301
在這兩種情況下'result'的值是多少? –