【问题标题】:Mongoose call a function for a field when inserting a documentMongoose 在插入文档时为字段调用函数
【发布时间】:2020-04-23 08:54:03
【问题描述】:

下面的代码 sn-p 工作正常。

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:转换为数字失败 路径“_id”中的值“Promise { }”

为什么会发生这种情况?

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    getNextSequence 是一个需要等待的异步函数 - 否则您会尝试将 Promise 保存到不支持的 MongoDB 中。试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2016-12-09
      • 2017-12-30
      • 1970-01-01
      • 2018-06-06
      • 2016-12-14
      • 2021-01-10
      相关资源
      最近更新 更多