2016-04-23 15 views
3

配列が存在する場合、配列に項目を追加するか、配列を作成して挿入する必要があります。rethinkdb文書の配列を作成または追加する

私はマージコマンドを試しましたが、マージすることはできません。

r.db('testdb').table('users').get('27e55a4a-a6f8-4ec9-bd02-f55f206700ff').merge({ 'hobbies':['Reading'] }) 

私は別の機能を渡してみましたが、doesntが動作するようです:

r.db('testdb').table('users').get('27e55a4a-a6f8-4ec9-bd02-f55f206700ff').merge(function(user) { 
    return r.branch(user('hobbies').eq(null), 
        { 'hobbies' : ['Reading'] } 
       user('hobbies').append('Reading')) 
}); 

ドキュメント構造の下に考えてみましょう:

{ 
"email": [email protected], » 
"id": "27e55a4a-a6f8-4ec9-bd02-f55f206700ff" , 
"image": https://lh4.googleusercontent.com/-O4ZXcLRpkHE/AAArAAAAAAAI/AdAAAAAAALMM/Fq968TTkd88Y/photo.jpg?sz=50, » 
"name": "John Doe" 
} 

を、私はどのように配列として趣味を追加したい場合私はそれをしなければならない。ホビー配列が存在するかどうかにかかわらず、クエリは両方とも機能しなければなりません。

答えて

3

最も慣用的な方法は、.update(function(user) { return {hobbies: user('hobbies').default([]).append('reading')}; })

+0

一つは、それはあなたが重複を追加しない保証して、代わりにAPPENDのsetUnionを使用する場合がありますされるだろう。 – aknuds1

0

最後に私は自分自身を考え出しました。

r.db('testdb').table('users') 
       .get("27e55a4a-a6f8-4ec9-bd02-f55f206700ff") 
       .update(function(user){ 
        return r.branch(user.hasFields('hobbies'), 
         { hobbies: user('hobbies').append('reading')}, 
         { hobbies : ['reading']} 
         )}) 
関連する問題