2016-10-11 13 views
0

私は私は何をしたいjoinedUserId "0e2f8e0c-2a18-499d-8e64-75b5d284e31a" を削除し、によってbadgeCountを更新below-Rethinkdb更新ネストされたオブジェクト

{ 
 
\t "badgeCount": { 
 
\t \t "0e2f8e0c-2a18-499d-8e64-75b5d284e31a": 0 , 
 
\t \t "c0d07f5c-25ff-4829-8145-c33c0871f889": 0 
 
\t } , 
 
\t "createdDate": Mon Oct 10 2016 19:25:10 GMT+00:00 , 
 
\t "deleted": false , 
 
\t "id": "1330c8b8-38a2-46e4-b93d-f7ff84a423ed", 
 
\t "joinedUserIds": 
 
\t [ 
 
\t \t "0e2f8e0c-2a18-499d-8e64-75b5d284e31a" 
 
\t ] 
 
}

のような文書をあるき最初のプロパティ "0e2f8e0c-2a18-499d-8e64-75b5d284e31a":0を同じクエリで削除します。

私はbelow-

r.db('mydb').table('discussion').filter({"id": "1330c8b8-38a2-46e4-b93d-f7ff84a423ed"}) 
 
    .update(function(s){ 
 
     return { 
 
     badgeCount: s('badgeCount').without("0e2f8e0c-2a18-499d-8e64-75b5d284e31a") 
 
     } 
 
    })

ようbadgeCountを更新しようとしたが、それは働いていません。私が何が欠けているか分からない。

おかげ Anup

答えて

0

再考は、次のように動作しません。オブジェクトはupdateで書き換えません。

この場合、現在のオブジェクトreplaceが必要です。また、filterの代わりにgetを使用したほうが速いですこの状況で同じことをしているので、idフィールドはユニークです。

あなたはbadgeCountから"0e2f8e0c-2a18-499d-8e64-75b5d284e31a"を削除したいのであれば、あなたはreplace使用する必要があります。ご返信用

r.db('mydb').table('discussion').get("1330c8b8-38a2-46e4-b93d-f7ff84a423ed").replace(function(s){ 
    return s.without({badgeCount : {"0e2f8e0c-2a18-499d-8e64-75b5d284e31a" : true}}).without("joinedUserIds").merge({ 
    joinedUserIds : s("joinedUserIds").filter(function(id){ 
     return id.ne("0e2f8e0c-2a18-499d-8e64-75b5d284e31a"); 
    }) 
    }); 
}) 
+0

感謝を。 badgeCountだけを置き換えたい場合はうまくいきます。しかし、同じクエリ内のjoinedUserIdsから0e2f8e0c-2a18-499d-8e64-75b5d284e31aも削除したいと思います。これどうやってするの? –

+0

このコードを実行すると、このエラーが発生します。「非オブジェクト非シーケンス 'null'では実行できません。」 –

+0

@AnupDasGupta ID「1330c8b8-38a2-46e4-b93d-f7ff84a423ed」のアイテムが再確認されていますか? – Suvitruf

関連する問題