如何在rethinkDB中更新嵌套对象

问题描述 投票:1回答:1

我在更新嵌套的object.sample数据时遇到了问题

{
  "status":{
     "draft":{
           "status":"draft",
           "rating":4
      },
     "review":{
            "status":"review",
           "rating":4
      },
     "publish":{
          "status":"publish",
           "rating":4
      }

    }
}

在上面的对象中,草稿/审查/发布有时候是空对象,需要检查条件并更新对象中的评级。我试过这样但是得到了错误。

查询:

     r.db('sample_db').table('table').filter({id:'xxxxxxx'})
  .update({"draft": r.row('status').map(function(data){
     return r.branch(
       data('draft').hasFields({'status':true}),
      data.merge({ "rating": 100 }),
      data
     )})
    })

错误:

 {
    "deleted": 0 ,
    "errors": 1 ,
    "first_error":  "Cannot convert OBJECT to SEQUENCE" ,
    "inserted": 0 ,
    "replaced": 0 ,
    "skipped": 0 ,
    "unchanged": 0
    }

任何人都可以帮我解决这个问题。提前致谢。

node.js rethinkdb
1个回答
0
投票

我不确定你到底想要做什么。但要根据是否包含状态字段来更新draft元素内的评级:

r.db('sample_db').table('table').get('idxxxxxxx')
  .update(function(e){
    return r.branch(e('status')('draft').hasFields('status'), 
       {'status':{'draft':{'rating':100}}}, e)
  })
© www.soinside.com 2019 - 2024. All rights reserved.