我有两个文档“用户”和“角色”,我正在使用以下查询合并这两个表记录
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为:”
答案 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')
});