#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #mongoose
Вопрос:
У меня есть следующий запрос от моего преобразователя graphql:
setFeatured: async function ({ id }, req) {
const post = await Post.findById(id)
const posts = await Post.where('_id').ne(id)
post.featured = true
await post.save()
posts.forEach(pst => {
pst.featured = false
await post.save()
})
return true
}
С помощью приведенного выше фрагмента кода я хочу установить статус сообщения, которое не выбрано пользователем, на false и наоборот.
Но я получаю эту ошибку в своей консоли
Ошибка синтаксиса: ожидание допустимо только в асинхронной функции, указывающей на строку await post.save()
внутри цикла forEach.
Как мне выполнить этот save()
запрос для каждого сообщения?
Ответ №1:
Вам также необходимо установить асинхронность для обратного вызова, переданного forEach.
posts.forEach(async pst => {
pst.featured = false
await post.save()
})
Другой подход к вашему, если в любой момент времени есть одно избранное сообщение, вы можете отделить избранное поле от сообщений и иметь единую запись, которая хранит идентификатор записи.