J'ai un projet utilisant des générateurs Koa et je suis frustré d'écrire des "contrôleurs". J'ai cherché des exemples, mais en réalité il n'y a pas beaucoup de résultats sur Github basés sur les mots-clés, donc je pense que je fais quelque chose de mal.Confus au sujet des fonctions Koa avancées
Mon application utilise koa-router
pour acheminer les points de terminaison aux générateurs.
Ensuite, le contrôleur se présente comme suit
export function* postEvent() {
const self = this
const user = yield User.findOne({slug: this.params.slug}).exec()
if (user) {
user.events.push({
[ ... ]
})
yield user.save((error, event) => {
yield postBlacklist({
[ ... ]
})
.then(event => {
self.status = 200
self.body = "Event created for: " + user.slug
})
})
} else {
[ ... ]
}
}
Comme vous pouvez le voir, ce générateur ne fonctionne pas. J'utilise yield
pour que l'application attende user.save()
pour terminer. Mais je ne peux pas faire yield postBlacklist()
parce que j'ai "épuisé" ma commande yield
. Si j'enlève le second yield
, j'obtiendrai un 404.
Alors, comment est-ce que j'emboîterais une promesse-retour dans un autre comme ceci?