2016-04-12 9 views
2

updatereplaceを一行でうまくいく方法があれば、誰も想像できますか?RethinkDBの更新と置換は一行で行われません

r.row.withoutを使用して、フィールドを削除し、同じクエリで更新したいと考えています。

ような何か:単純にいいだろうが、これを動作しません、連鎖

r.db('db').table('table').get('item_id') 
      .update({ field_a:'value_a'}) 
      .replace(r.row.without(r.args(['field_b'])))` 

(更新は変更結果を返します)。

答えて

2
r.db('db').table('table').get('item_id') 
    .replace(
     r.row.merge(
      function(doc){ 
       return {field_a: 'newval'} 
      } 
     ).without('field_b') 
    ) 

あなたはまた、一つのフィールドを変更すると同時に、別のフィールドを削除するには.update({field_a: 'value_a', field_b: r.literal()})を書くことができますトリック

+2

ありがとう@Neilは、お化けのように動作します。 私はあなたも無名関数なしでそれを行うことができると思います。 'r.row.merge({field_a: 'newval'})なし( 'field_b')' – Sagivf

3

を行う必要があります。

+0

@mlucyに感謝します。 – Sagivf

+0

この回答は、現在選択されている正解より簡単/可読/簡単です。 – evilReiko

関連する問題