【发布时间】:2016-03-27 03:08:37
【问题描述】:
我将 NodeJS 和 Mongoose 用于有用户的应用程序。而且我有大量服务器对特定用户执行的操作,具体取决于请求。
也就是说,我在很多函数中都有这个特定的代码片段:
User.findOne({'email':req.user.email}, function (err, user) {
if (err) {
console.log('err');
res.send('Error');
}
if(!user){
console.log('err');
res.send('Error');
}
// do something with returned user
user.data = ....
...
user.save(function(err) {
if(err) {
console.log('err');
res.send('Error');
}
else {
console.log('success');
res.send('Success');
}
}
如您所见,有很多重复的代码。更改的代码是“对返回的用户做某事”部分。几乎所有其他内容(错误消息等)都保持不变。
那么,我怎样才能把这部分提取出来呢?既然这是在回调机制上工作,那有什么方法可以实现吗?
【问题讨论】:
-
使用
.update()代替初学者。使用.findOne()然后操作然后调用.save()是一种非常糟糕的做法,它会占用带宽,使事情变得缓慢并且通常充满漏洞,从而导致更新的并发问题。这是一个更广泛的问题,但只要弄清楚如何正确应用该调用将节省大量样板文件并为您带来许多其他好处。
标签: node.js mongodb mongoose callback code-duplication