我有两个文档"用户"和"角色",我正在通过以下查询合并这两个表记录
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')
});