在node.js的retify模块中正确放置return next()的位置
Where to put return next() properly in Restify module in node.js?
下面是一个从数据库查询用户的例子,如果用户存在,另一个查询电话:
module.exports = function (username, req, res, next) {
var query = User.where('username', new RegExp('^' + username + '$', 'i'));
query.findOne(function (err, user) {
if (err) {
res.send("error");
//## position D
} else if (!user) {
res.send("user not found");
//## position D
} else {
//user exists
//search for phone
var query2 = Phone.where('phone', new RegExp('^' + user.phone + '$', 'i'));
query2.findOne(function (err, phone) {
if (err) {
res.send("error");
//## position D
} else if (!phone) {
res.send("phone not found");
//## position D
} else {
res.send(phone);
//## position D
}
//## position C
});
}
//## position B
});
//## position A
}
我的问题是:基于这段代码,在哪里是正确的地方设置返回next();为什么呢?
我设置了一些建议:
位置A: @功能底部。在这里它被称为偶数
位置B: @第一个回调函数的底部
位置C: @上次回调函数底部
位置D:在res.send(…)之后立即
p。S:我知道我可以将error作为对象传递到next..我只是想让代码简单,专注于主要问题。
谢谢同负一轭的,"。
位置D,当然,但你可以有一些更"干净"的回调。
module.exports = function (username, req, res, next) {
var query = User.where('username', new RegExp('^' + username + '$', 'i'));
query.findOne(function (err, user) {
if (err) {
return next(err);
}
if (!user) {
res.send("user not found");
return next();
}
//user exists
//search for phone
var query2 = Phone.where('phone', new RegExp('^' + user.phone + '$', 'i'));
query2.findOne(function (err, phone) {
if (err) {
return next(err);
}
if (!phone) {
res.send("phone not found");
} else {
res.send(phone);
}
next();
});
});
}
相关文章:
- ES6生成器:.next()的输入值
- jquery if语句返回return wong语句
- 函数在return语句之前返回空对象
- Javascript Return and if/else
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 使用next、prev按钮制作简单的jQuery图像滑块
- Angular promise return"未定义的“;值.NET MVC
- Javascript用函数return替换局部变量
- JavaScript中的“return cb()”有缺点吗
- Redux中间件在next()之前更改状态
- JS-fn()中返回后方括号的含义{return{}[]}
- 为什么javascript在'return false'
- return false不阻止点击
- 当使用return语句时,循环不会中断
- 如何在不使用return的情况下跳过下一个if语句
- return false不停止表单提交
- 如何禁用FuelUX向导步骤1中的NEXT按钮
- ExpressJS next(error) vs return next(error)
- 为什么这些不稳定的函数以“;return next()"
- 在node.js的retify模块中正确放置return next()的位置