把一个json对象放入mongoose模型中,我们得到.save不是一个函数

在顶部我有这个:

var invoiceModel = require('../../models/invoiceModel'); var invoiceRecord = new invoiceModel(); 

这一切都很好,如果我一个一个地填写发票领域,它的工作。

 invoiceRecord.dueDate = someDate invoiceRecord.amount = someAmount etc.. invoiceRecord.save(function (err, res) { etc.. 

但! 我从req.body得到整个logging结构当我这样做:

 invoiceRecord = req.body.invoice 

然后我的invoiceRecord.save会给这个错误

 TypeError: invoiceRecord.save is not a function 

我了解它,因为即使您将invoiceRecord定义为模型,也会被req.body.invoice覆盖并成为对象。

如果我唯一的方法是逐个移动字段(因为我有很多字段)

只需要这样做:

 var invoiceRecord = new invoiceModel(req.body.invoice) 

但请确保对象的键名与mongoose中的键名相同。 例如:如果你的对象是这样的: {name: 'Kamesh'}那么你的mongoose模型应该在模型中有'name'字段。 所以每当你传入整个对象时,mongoose会知道在数据库的哪个字段中放入哪个值。