我正在尝试通过从文件中读取数据并使用“更新”方法来更新数据库中的数据。
var Model = require('./dbIndex').Model
BioMetrics.update({AID: AID},
{$pushAll: {
attr1: data[5] === '' ? undefined : {val: data[5], dt: date},
attr2: data[6] === '' ? undefined : {val: data[6], dt: date},
attr3: data[10] === '' ? undefined : {val: data[10], dt: date}
}}, options, callback);
当我运行时,我收到以下错误:
TypeError: Cannot read property 'constructor' of undefined
Mongo不知道undefined
的含义是什么?我的印象是,当undefined为真时,Mongo就会忽略该属性。
有人可以解释这里发生了什么吗?
答案 0 :(得分:2)
MongoDB可能会忽略设置为undefined
的字段,但Mongoose不会因为它有一个架构可以使用,并且会尝试将值转换为模式中定义的正确类型。
对于这样的情况,您可以通过编程方式构建$pushAll
值,仅包含所需的属性:
var value = {};
if (data[5] !== '') {
value.attr1 = {val: data[5], dt: date};
}
if (data[6] !== '') {
value.attr2 = {val: data[6], dt: date};
}
if (data[10] !== '') {
value.attr3 = {val: data[10], dt: date};
}
BioMetrics.update({AID: AID}, {$pushAll: value}, options, callback);