0

我正在尝试通过从文件中读取数据并使用“更新”方法来更新数据库中的数据。

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 会忽略该属性。

有人可以解释这里发生了什么吗?

4

1 回答 1

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);
于 2013-06-03T21:23:45.810 回答