如果其他作品正好与我想要的相反
以下代码是控制器的一部分,它可以切换post的“喜欢”状态。
它是这样工作的:
- 首先,用户在post上查找任何喜欢的东西。
- 如果不存在,则保存状态。
- 如果存在,则“删除”现有的状态。
这里的代码是:
// 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 , “” , null , undefined和NaN )。
一个空的数组( []
)不在上面的列表中,所以它是真的 。
您可能想要返回null
。
- Express / node.js路由器中的通配符
- node.js + express + mongodb任何人都曾尝试使用快速'会话pipe理与副本集
- 使用Express.js服务静态文件和app.get冲突
- crypto.decipher导致stream不会在节点js中closures
- Express.js:路由中的正则expression式
- Socket.io,https,并表示连续的连接/断开循环
- 如何在不同的端口运行节点应用程序 – 暂时?
- 检查variables是否为空不工作| NodeJS,Express
- configurationNode.js / Express服务器以使用React-Router BrowserRouter