Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬罐头';t将一个特定集合的文档保存到数据库_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 猫鼬罐头';t将一个特定集合的文档保存到数据库

Node.js 猫鼬罐头';t将一个特定集合的文档保存到数据库,node.js,mongodb,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

我有一个函数

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.')
    })
});
问题是我在我的
发票
集合中找不到
发票数据
then
块的回调函数中的
data
就是文档,但我在发票集合中找不到相同的文档

所有的承诺都得到了解决。它不在catch块中,我正在从
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块中,正如我前面提到的,它是一个有效的文档

编辑:以下是涉及使用
生成文件
功能的完整代码:

代替

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


可能是模态的问题。您可以分享您的模式吗?您的
发票没有
.catch()
子句。创建
调用-可能尝试添加该调用,看看它是否显示任何有趣的内容。@BipinChandraTripathi我已经更新了我的question@d0gb3r7没有错误,这只是过程的一部分,在一系列承诺中,成功了。好吧,我试着在本地运行你的代码,
generateInvoice
按预期创建了一个DB条目。但是,“我如何使用此函数”块不能按原样使用(大概
newBooking
id
是在程序的外部范围中定义的)。由于这个问题很难为其他人重现,我建议尝试在一个完整的、自包含的示例中重现这个问题(例如,在GitHub gist中)。你甚至可以自己找到解决办法。你能解释一下你的答案吗?一件事和另一件事有何不同?而且,我已经试过了,但没有成功。您的解决方案对您有效吗?如果仍然存在问题,请尝试记录错误,然后制作一个小示例,让我们测试一下,然后您还可以尝试删除旧文件并在其中创建新文件和代码
new Invoice(invoiceData).save((err,data)=>{
    if(err) return console.log(err);
    return data._id;
})