node.js - Mongoose 无法将某一特定集合的文档保存到数据库

标签 node.js mongodb mongoose

我有一个函数

function generateInvoice(data) {
  const cdate = new moment.tz('GMT').toDate();
  let invoiceData = {
    date: cdate,
    paidStatus: true,
    amount: data.amount,
    userId: data.userId
  }

  if (data.planName && data.planTypeName) {
    invoiceData.item = `${data.planName} - ${data.planTypeName}`
    invoiceData.quantity = data.seats || data.slots;
  }
  if (data.credits) {
    invoiceData.item = 'Credits';
    invoiceData.quantity = data.credits;
  }

  return Invoice.create(invoiceData).then((data)=>{
    data.invoiceId = data._id.toString().slice(-5);
    return data.save().then((data)=>{console.log(data); return data.invoiceId}).catch((err)=>{
      throw new ErroWithStatusCode(500, 'Sorry, we seem to be facing some issue right now. Please, try again later.', err);
    })
  })
}

这就是我使用此功能的方式

return generateInvoice(invoiceData).then((data)=>{
    newBooking.orderId = data;
    id = data;
    return newBooking.save().then((booking) => {
      return booking;
    }).catch((err) => {
      throw new ErroWithStatusCode(500, 'Sorry, we are facing some issue right now. Please try again later.')
    })
});

问题是我在 invoices 集合中找不到 invoiceDatathen block 的回调函数中的 data 是文档,但我在发票集合中找不到相同的文档。

所有的 promise 都得到兑现。它没有落在 catch block 中,我正在从 Invoice.create(invoiceData) 接收有效数据。

此外,newBooking.save() 函数正在按预期工作。所以,这就是最让我困扰的,为什么它不适用于某个特定的集合。

这背后的原因是什么?

编辑:这是发票架构

const InvoiceSchema = new Schema({
  item: String,
  paidStatus: Boolean,
  quantity: String,
  amount: Number,
  invoiceId: String,
  userId: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
  date: {type: Date, default: Date.now()},
  __v: {type: Number, select: false}

}, {strict: true})

export default mongoose.model('Invoice', InvoiceSchema);

我没有收到任何错误,预订成功。我尝试记录 then block 中收到的数据,这是一个有效的文档,正如我上面已经提到的。

编辑:以下是涉及使用 generateInvoice 函数的完整代码: book.js

最佳答案

已安装

return Invoice.create(invoiceData).then((data)=>{...

尝试

new Invoice(invoiceData).save((err,data)=>{
    if(err) return console.log(err);
    return data._id;
})

关于node.js - Mongoose 无法将某一特定集合的文档保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031518/

相关文章:

javascript - 是否可以从 JavaScript 中的 ECMAScript 6 类继承旧式类?

javascript - Angular UI 网格 : notify user that sort may take a while

mongodb - 在MongoDb中,当只更新文档的2个字段时,进行常规更新还是原子更新更快?

javascript - 我的作业项目 : Stock Price Checker 的异步/等待问题

javascript - 为什么我的 hello world node.js tcp 服务器没有获得任何连接?

Node.js 内存泄漏,尽管 Heap + RSS 大小不变

php - MongoDB:集合中的重复文档

javascript - 在 Mongoose 中创建多对多关系,填充不是函数

node.js - Mongoose:一系列自定义实例

node.js - 根据子文档值搜索mongodb文档