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')
});
我有两个文档 "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')
});