Je pense le problème réside dans cette ligne:
return new Promise(function(resolve, reject){
return models.merchants.create({
name: ctx.name,
});
// .....
fonction Promise
devrait a resolve()
, quelque chose comme ceci:
return new Promise(function(resolve, reject){
resolve(models.merchants.create({
name: ctx.name,
}));
Basé sur this reference:
The resolve and reject functions are bound to the promise and calling them fulfills or rejects the promise, respectively.
Toujours basé sur la référence, il est le graphe de flux Promise
:
Le then()
ou catch()
après Promise()
ne gère pas le resolve()
ni reject()
, ils traitent uniquement la valeur transmise par resolve()
ou reject()
.
Donc, je pense que votre code devrait être quelque chose comme ceci:
return new Promise(function(resolve, reject){
resolve(models.merchants.create({
name: ctx.name,
}));
}).then(function(merchants){
console.log(merchants) // the created `merchants` from the `resolve()` of the promise would be passed here.
return merchants;
});
MISE À JOUR
Votre code devrait ressembler à ceci:
return new Promise(function(resolve, reject){
models.merchants.create({ // assuming `models.merchants.create()` is an async method
name: ctx.name,
}).then(function(result){
resolve({
id: result.id
});
}).catch(function(err){
reject(err);
});
mais maintenant le problème est ReferenceError: rejeter n'est pas défini – Alvin
vous devriez également supprimer le 'reject()' dans votre 'catch()'. Vous devriez utiliser 'reject()' dans votre 'Promise()' – samAlvin
@Alvin J'ai mis à jour ma réponse :) – samAlvin