我刚刚遇到了这个奇怪的问题,其中下面的代码按预期返回数组中所有对象的 refno但是let records = await Expense.find({}).exec(); // records is an array of objects [{},{}] for (let obj of records) { // the obj has a refno property which i want to change obj.refno = 0 // this works as expected by changing refno property to 0 }console.log(records)下面这段代码将属性值更改为字符串不起作用 for (let obj of records) { obj.refno = "QM"+obj.refno }console.log(records) // IN this the refno. doesnt change我的要求是将 refno 更改为字符串//the object{ _id: 5efed2c813b03d331e4dc052, refno: 102, project: 'EV Battery Pack', invoiceno: 'dia', description: 'black frame', date: '2020-07-03',}所以将属性更改为其他数字有效,但不是字符串,我无法理解这是如何发生的,或者我错过了什么?无论如何我通过声明另一个属性并将字符串存储在其中解决了这个问题,但我不知道为什么 int 不能更改为对象内的字符串有人可以解释为什么会发生这种情况谢谢帮助编辑:费用模式var schema = new Schema({ refno: { type: Number, require: true }, project: { type: String, require: true }, projectid: { type: Number, require: true }, invoiceno: { type: String, require: true }, description: { type: String, require: true }, date: { type: String, require: true }, INR: { type: Number, require: true }, USD: { type: Number, require: true }, remarks: { type: String, require: true },});
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
您.find().exec()
调用的结果是猫鼬文档,如果结果数据类型不符合模式约束,则不允许修改其值。
但是,您可以在 mongoose 文档上使用.lean()
(请参阅https://mongoosejs.com/docs/api.html#query_Query-lean),它将其转换为普通的 js 对象,然后您可以任意修改:
let records = await Expense.find({}).exec().lean();
添加回答
举报
0/150
提交
取消