当插入工作时,meteor upsert失败

时间:2017-08-16 11:27:16

标签: mongodb meteor upsert

我在按预期或完全按照保存数据进行保存时遇到问题。

尝试1:

Video.upsert({
  user: videoData.user,
}, {
  $push: {
    video: videoData.video,
  }
});

结果1:

  

Mongo中的异常写:TypeError:无法读取属性'indexOf'的   undefined I20170816-12:32:05.868(2)?在   Function.MongoConnection._isCannotChangeIdError   (包/蒙戈/ mongo_driver.js:641:7)

尝试2:

Video.upsert({
  user: videoData.user,
}, {
  $addToSet: {
    video: videoData.video,
  }
});

结果2:

  

Mongo中的异常写:TypeError:无法读取属性'indexOf'的   undefined I20170816-12:39:54.709(2)?在   Function.MongoConnection._isCannotChangeIdError   (包/蒙戈/ mongo_driver.js:641:7)

尝试3:

Video.upsert({
  user: videoData.user,
}, {
  $set: {
    video: videoData.video,
  }
});

结果3:

  

Mongo中的异常写:TypeError:无法读取属性'indexOf'的   undefined I20170816-12:42:18.915(2)?在   Function.MongoConnection._isCannotChangeIdError   (包/蒙戈/ mongo_driver.js:641:7)

尝试4:

Video.update({
  user: videoData.user,
}, {
  $set: {
    video: videoData.video,
  }
}, {
  upsert: true,
});

结果4:

每次运行时保持创建以下文档(不更新现有文档),并且缺少video字段:

{ "_id" : "Gs5of657ZqKa4ec3h", "user" : "testUser" }

尝试5:

Video.update({
  user: videoData.user,
}, {
  $addToSet: {
    video: videoData.video,
  }
}, {
  upsert: true,
});

结果5:

  

Mongo中的异常写:TypeError:无法读取属性'indexOf'的   undefined I20170816-13:06:13.250(2)?在   Function.MongoConnection._isCannotChangeIdError   (包/蒙戈/ mongo_driver.js:641:7)

尝试6:

尝试插入二进制文件。

Video.insert({
  user: videoData.user,
  video: videoData.video,
});

结果6:

每次运行时添加以下文档,证明传递的对象是OK:

{ "_id" : "ceg3dXWXZoHjcy4AT", "user" : "testUser", "video" : { "$binary" : "a long string goes here", "$type" : "00" } }

为什么我没有尝试失败?我将错误消息解释为好像没有使用user字段找到要更新的任何文档,但是当它是upsert时是否应该插入一个?

我想要的是包含一系列视频数据文档的用户文档。

1 个答案:

答案 0 :(得分:0)

好的,首先您应该在this.setState({item : items}, () => console.log(this.state.item));字段上创建唯一索引。

接下来,像这样使用user

upsert
相关问题