У меня есть этот код:
router.put('/test', (ctx, next) => {
post.create(something, (err, newPost) => {
if (err) return
ctx.body = newPost
})
console.log(ctx.body) // => undefined
ctx.status = 200
})
Проблема в том, что значение, которое я установил в обратном вызове переменной ctx.body, теряется вне обратного вызова.
И я не могу заставить его работать. Я пытался bind
/ async await
, но безуспешно.
Вы можете мне помочь?
EDIT: @CertainPerformance, "дубликат" post , который вы связали, не отвечает на мой вопрос, потому что решение, которое он предлагает, включает в себя прямое изменение сигнатуры функции, которая дает обещание post.create
в моем случае. И я не могу просто сделать это, потому что это часть Mongoose API. Я прочитал весь пост, и я не нашел решения. Так что же нам делать с этим постом?
РЕДАКТИРОВАТЬ: Основываясь на ответе ниже, я нашел два решения:
router.put('/test', async (ctx, next) => {
const newPost = await Post.create(something).then(post => post)
ctx.body = newPost
ctx.status = 200
})
и
router.put('/test', async (ctx, next) => {
const newPost = new Post(something)
await newPost.save()
ctx.body = newPost
ctx.status = 200
})