1

我正在使用express-restify-mongoose库来对抗猫鼬的休息端点。

我的架构如下所示:

const BookSchema = new Schema(
  {
    name: { type: String },
    items: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Book' }],
  }
);

所以我发送 http 补丁请求:{ name: 'blabla' }它会按预期更改名称。

但是当我想将项目添加到项目数组时,就像{ items: ["5dd138199f6ecb3990360328"] }它替换整个对象(用一个5dd138199f6ecb399036032d项目)一样。

在我挖掘源代码后,我在这里看到该函数使用findOneAndUpdate$set.

所以我的问题是有什么方法可以使用$push或值中有任何功能/属性$set吗?

我无法添加到这个库,但也许这里有任何解决方法?

4

1 回答 1

1

我认为 mongoose 中最接近的解决方案是使用Set Elements in Arrays

"items.1": "5dd138199f6ecb3990360355"

这将添加到数组中,但您必须传递位置。

于 2019-11-17T13:25:54.190 回答