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

rethinkdb merging two tables with only one record

我有两个文档 "Users" 和 "Roles",我正在将这两个表记录与以下查询合并

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 个角色,它会 return 错误,错误是

"RqlRuntimeError: Expected type ARRAY but found STRING in:"

您的 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')
});