При использовании Waterline ORM, если я хочу использовать обещание bluebird api, которое отправлено по умолчанию, как передать обработку обратно контроллеру.SailingJS Waterline with Bluebird Promises
Ниже приведен код:
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 в этом коде? – vanadium23
Согласно документу (http://sailsjs.org/#!/documentation/reference/waterline/queries), ватерлиния имеет частичную реализацию Bluebird, я обволакиваю его вокруг кода после User.find .. .. then –