Как обещать Монго / Пн goose найти - PullRequest
0 голосов
/ 28 мая 2020

В рамках другого вопроса я пытаюсь обещать запрос mongo / mon goose find. Я нашел небольшую помощь через панель поиска. Запрос ниже, я запускаю этот запрос как часть контроллера в express. Настройка - это маршрут -> userController.monitor, который должен содержать запрос

При получении справки по другому вопросу меня попросили promisify find so that you can use await for it (like const incidents = Incident.find({fooID}).exec();, хотя поиск SO и мои попытки обещать его сам потерпели неудачу.

Запрос:

Incident.find({fooID})
.exec((err, incidents) => {
// do something
})

Обратите внимание, что findOne не будет работать в этом случае, потому что несколько документов будут возвращаться почти все время

Edit

Инцидент .find ({monitorID, createdAt: {$ gte: sevenAgo}})

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете создать обещанную версию своей функции поиска, используя функцию promisify в модуле util из node.js

const { promisify } = require('util')

const promisifiedIncidentFindExec = payload => {
  const query = Incident.find(payload)
  return promisify(query.exec).call(query)
}

const incidents = await promisifiedIncidentFindExec({
  monitorID: 'monitorID',
  createdAt: { $gte: 'sevenAgo' },
})
// do something
...