我试图通过将PUT动词用于基于环回的Rest API来一次性多个文档。 消息正文包含一个json对象数组。
[
{"_id" : "1",
"data" : "foo"
},
{"_id" : "2",
"data" : "bar"
}
]
在空数据库上,这很好用(创建)。所有文档都按预期创建。 但是,如果我再次运行相同的调用(更新),我收到一个包含类似错误消息数组的错误:
E11000重复键错误索引:testdatabase.node。$ id dup key:{:“1”}
经过一些进一步的调查,我发现如果我传递一个对象,upsert工作正常。
{"_id" : "1",
"data" : "foo"
}
但是:如果我使用相同的单个对象传递一个数组,则会返回错误。
[
{"_id" : "1",
"data" : "foo"
}
]
单个upserts不是一个选项,因为我必须使用Rest Api更新数千个文档。
环回版本:2.22
答案 0 :(得分:0)
upsert
函数将单个模型作为参数。
看看documentation。
为了根据需要更新不同的模型,您必须使用本机驱动程序。
修改强>
我挖掘了环回源代码,发现PUT
请求使用了连接器的upsert函数。
这意味着它需要一个模型而不是一个数组,也许loopback并没有强制执行它。
您可以找到相关代码here。
无论如何,最接近多个模型的是mongodb的批量操作,但这会导致自我实现。