Mon goose вызов функции для поля при вставке документа - PullRequest
1 голос
/ 05 января 2020

Ниже фрагмент кода работает нормально.

function simple() {
  return 10000;
}

db.Invoice.create({
  items: selectedItems,
  _id: simple("userid")
});

Но если я изменю simple function на это

async function getNextSequence(sequenceName) {
  const sequenceDocument = await db.Counter.findOneAndUpdate(
    { _id: sequenceName },
    { $inc: { seq: 1 } },
    { new: true }
  );

  console.log("seq", sequenceDocument);

  return sequenceDocument.seq;
}

db.Invoice.create({
  items: selectedItems,
  _id: getNextSequence("userid")
});

Это выдаст мне ошибку.

ValidationError: Ошибка проверки счета: _id: Ошибка приведения к номеру для значения "Promise {}" по пути "_id"

Почему это могло произойти?

1 Ответ

1 голос
/ 05 января 2020

getNextSequence - это асинхронная функция, которую нужно ожидать - в противном случае вы пытаетесь сохранить Promise в MongoDB, которая не поддерживается. Попробуйте:

db.Invoice.create({
    items: selectedItems, 
    _id: await getNextSequence('userid'),
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...