重新考虑数据库合并两个只有一条记录的表



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

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:"

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

最新更新