更新文档并在1个查询中获取其所有字段

时间:2018-03-21 04:20:52

标签: rethinkdb

我有一个文档的ID,我希望检索所有字段,同时在一个查询中更新其中一些,可选择作为原子操作。

我尝试了以下内容:

myTable.get(id).update(someFields, {returnChanges: true})

...但是只有在修改后它才会给我文件。我希望在更新没有更改任何字段时检索文档事件。

作为tmp解决方法,我目前正在使用两个连续查询:更新,然后是get。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:

myTable
  .get(id)
  .update(someFields, {returnChanges: 'always'})
  ('changes')(0)('new_val')

{returnChanges: 'always'}告诉数据库总是返回一对new_val / old_val,即使它们是相同的。

重要说明:如果找不到文档,使用{returnChanges: 'always'}会产生不抛出异常的副作用。相反,它会为nullnew_val返回old_val。在这种情况下不要依赖例外。