Ho iniziato a utilizzare le promesse, uso Node.js Mango (con mangusta) e bluebird .. Il problema che sto avendo è per qualche motivo quando ordino la chiamata alla mangusta con le funzioni di ritorno promesse (sto assumendo questo è il modo corretto per tornare e catena) allora ottengo:JavaScript promette manuele e bluebird mancanti catch and fail
typeError: Object #<Promise> has no method 'fail'
se cambio il non riescono a catturare tanto sono lo stesso problema:
typeError: Object #<Promise> has no method 'catch'
quello che faccio è utilizzare la funzione (null, funzione) modello che è esattamente sicuro un e prendere. Tuttavia il fermo/fallire è più leggibile. Qualche idea sul perché sto ricevendo questo e come dovrei risolvere questo problema?
Ecco un esempio del blocco di codice.
User.findOne({ 'email' : user_email }).exec()
}).then (promisedTransformUserSchemaToFrontendObjectWithProjectMapping)
.then (function (feUser) {
return new Promise(function (resolve, reject) {
res.json(feUser);
return resolve(feUser);
});
}).fail/catch (function (err) {
console.log(err);
sendError(res,"failed to get user",err);
});
E qui è lo stacktrace:
TypeError: Object #<Promise> has no method 'catch'
at module.exports.app.put.User.update.email (app\controllers\router.js:165:16)
at callbacks (node_modules\express\lib\router\index.js:164:37)
at isLoggedIn (app\controllers\router.js:741:10)
at callbacks (node_modules\express\lib\router\index.js:164:37)
at param (node_modules\express\lib\router\index.js:138:11)
at param (node_modules\express\lib\router\index.js:135:11)
at pass (node_modules\express\lib\router\index.js:145:5)
at Router._dispatch (node_modules\express\lib\router\index.js:173:5)
at Object.router (node_modules\express\lib\router\index.js:33:10)
at next (node_modules\express\node_modules\connect\lib\proto.js:193:15)
puoi condividere la traccia dello stack? –
Non utilizzare le promesse restituite da mangusta, solo promisifyAll e utilizzare esclusivamente i metodi '* Async' – Esailija
Anche il bit' new Promise' soffre dell'anti-pattern posticipato – Esailija