[英]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.