【发布时间】:2015-06-05 05:55:31
【问题描述】:
使用水线 ORM 时,如果我想使用默认提供的 bluebird promise api,如何将处理传递回控制器。
下面是代码:
module.exports = {
//Authenticate
auth: function (req, res) {
user = req.allParams();
//Authenticate
User.authenticate(user, function (response) {
console.log(response);
if (response == true) {
res.send('Authenticated');
} else {
res.send('Failed');
}
});
}
};
module.exports = {
// Attributes
// Authenticate a user
authenticate: function (req, cb) {
User.findOne({
username: req.username
})
.then(function (user) {
var bcrypt = require('bcrypt');
// check for the password
bcrypt.compare(req.password, user.password, function (err, res) {
console.log(res);
if (res == true) {
cb(true);
} else {
cb(false);
}
});
})
.catch(function (e) {
console.log(e);
});
}
};
我只是想实现一个身份验证功能。业务逻辑是直截了当的。我感到困惑的是从那以后请求流是如何交回控制器的。如果我尝试返回响应,则承诺不会响应,但执行 cb(value) 是有效的。
【问题讨论】:
-
这段代码中你在哪里返回 Promise?
-
根据文档 (sailsjs.org/#!/documentation/reference/waterline/queries) ,水线部分实现了 Bluebird ,我在 User.find 之后将我的头绕在代码上......然后
标签: node.js sails.js waterline