我开始学习JS中的Promise,我试图用promises替换现有的回调逻辑。我编写了一个函数,它返回一个新的promise,并使用数据库实例的promise来检索数据。但是,我不确定我是否做得对。这是代码片段,
usersService.js
var getUsers = function(queryObject) {
return new Promise(function(resolve, reject) {
dbConnection.find(queryObject)
.then(function(result) {
if (result.length > 0) {
resolve(result)
} else {
resolve(errorMessage.invalidUser())
}).catch(function(err) {
reject(err)
});
})
};
usersRouter.js
router.get('/users', function (req,res,next) {
var queryObject = { "userId":req.query.userId };
userService.getUsers(queryObject)
.then(function (data) { //some logic })
.catch(function (err) { //some logic });
});
resolve
吗?提前致谢!
答案 0 :(得分:0)
由于dbConnection.find返回一个promise,您可以直接返回它,并选择解析时将传递的内容。无需将其包含在其他承诺中。
var getUsers = function (queryObject) {
return dbConnection.find(queryObject).then(function (result) {
if (result.length > 0) {
return result
} else {
return errorMessage.invalidUser()
}
})
};