我有一个功能
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.')
})
});
问题是我无法在invoiceData
集合中找到invoices
。 data
块的回调函数中的then
是文档,但我无法在发票集合中找到相同的文档。
所有承诺都得到了解决。它不在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块中收到的数据,这是一个有效的文档,正如我上面已经提到的那样。
编辑:以下是使用generateInvoice
函数的完整代码: book.js
答案 0 :(得分:1)
Insted of
return Invoice.create(invoiceData).then((data)=>{...
尝试
new Invoice(invoiceData).save((err,data)=>{
if(err) return console.log(err);
return data._id;
})