rethinkdb合并两个只有一条记录的表

时间:2016-02-18 06:12:20

标签: rethinkdb merging-data

我有两个文档“用户”和“角色”,我正在使用以下查询合并这两个表记录

r.db('myDB').table('users').merge({
roles: r.db('myDB').table('Roles').getAll(r.args(r.row('roles')))('Name').coerceTo('ARRAY')

})

用户文档:

{"id":  "1" ,"password":  "123" ,"roles":  "[1]" ,"userName":  "user1"} 
{"id":  "2" ,"password":  "123" ,"roles": ["1","2"] ,"userName":  "user2"}

当对用户有多个角色时,它的工作正常。但如果用户只有1个角色错误

,则返回错误

“RqlRuntimeError:预期类型为ARRAY,但发现STRING为:”

1 个答案:

答案 0 :(得分:0)

好像你的roles可能是一个字符串而不是一个数组。如果是这种情况,请试试这个:

r.db('myDB').table('users').merge({
  roles: r.db('myDB').table('roles').getAll(r.args(
    r.branch(r.row('roles').typeOf().eq('ARRAY'), r.row('roles'),[r.row('roles')]))
  )('Name').coerceTo('ARRAY')
});
相关问题