我想插入一个文件,如果它不存在(找不到client_nr)。 如果存在,请用新值替换整个文档。 唯一的另一个是,client_nr不是主键。主键是rethinkdb数据库创建的默认ID。
我在节点js中尝试了以下代码,但没有任何反应。数据位于变量jsonArray中。我使用for循环遍历整个jsonArray。
知道如何解决这个问题吗?
感谢!!!
for(var Ticker in jsonArray){
r.db(db).table('trades').filter({client_nr: jsonArray[Ticker].client_nr}).forEach(function(post) {
return r.branch(
post.eq(null),
r.db(db).table('log').insert(jsonArray[Ticker]),
r.db(db).table('log').replace(jsonArray[Ticker])
)
}).run()
}
答案 0 :(得分:0)
如果client_nr
是您的主键,那么这样做会容易得多。我考虑这样做,而不是使用自动生成的ID。这也将强化场上的独特性,这可能是你想要的。
我也对你的例子感到有点困惑,因为你的描述听起来好像你想要插入/替换你正在过滤的同一个表,但是你的例子引用了两个不同的表。
假设您想要使用单个表,这样的事情应该这样做:
TABLE.filter({client_nr: jsonArray[Ticker].client_nr}).replace(function(row) {
return r(jsonArray[Ticker]).merge(row.pluck('id'));
}).do(function(res) {
return r.branch(
res('replaced').add(res('unchanged')).eq(0),
TABLE.insert(jsonArray[Ticker]),
res);
})