0

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

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 个时,它可以正常工作。但如果用户只有 1 个角色,则返回错误,错误是

“RqlRuntimeError:预期类型 ARRAY 但在以下位置找到 STRING:”

4

1 回答 1

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')
});
于 2016-02-18T06:55:30.923 回答