簡體   English   中英

貓鼬在插入文檔時調用字段的函數

[英]Mongoose call a function for a field when inserting a document

下面的代碼片段工作正常。

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:Cast to Number 在路徑“_id”處的值“Promise { }”失敗

為什么會發生這種情況?

getNextSequence是一個需要等待的異步函數 - 否則您試圖將Promise保存到不支持的 MongoDB 中。 嘗試:

db.Invoice.create({
    items: selectedItems, 
    _id: await getNextSequence('userid'),
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM