Wenn ich die Wasserlinie ORM verwende, wenn ich die Bluebird-Versprechen-API, die standardmäßig geliefert wird, verbrauchen möchte, wie ich die Verarbeitung zurück an den Controller übergebe.SailsJS Waterline mit Bluebird Promises
Unten ist der Code:
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);
});
}
};
bin ich einfach versucht, eine Authentifizierungsfunktion zu implementieren. Die Geschäftslogik ist einfach. Was mich verwirrt, ist, wie der Anfragefluss an den Controller seither übergeben wird. Das Versprechen reagiert nicht, wenn ich versuche, eine Antwort zurückzugeben, aber ein cb (Wert) funktioniert.
Wo Sie zurücksenden Versprechen in diesem Code? – vanadium23
Laut dem Dokument (http://sailsjs.org/#!/documentation/reference/waterline/queries), hat Waterline eine partielle Implementierung von Bluebird, ich habe meinen Kopf um den Code nach dem User.find gewickelt. ..then –