2016-02-09 121 views
0

我在反思分貝兩個文件像下面合併兩個表中的記錄

角色:

{"Name": "client" ,"id": "dfd1a03d-ddb2-458e-8379-f443daa0fcfd"} 
{"Name": "admin" ,"id": "c1ed66a4-8e72-416b-8237-c4a0518826c8" 
} 

用戶:

{"id": "ae9aaaea-24b6-4880-9a81-d6ee34c82dde" , 
"password": "$2a$10$MqaQjif6bigsoYV82s/SXeWsQQ9.NnEPykw1L/nLcfOmWRryq8XJe" , 
"roles": ["c1ed66a4-8e72-416b-8237-c4a0518826c8" ,"dfd1a03d-ddb2-458e-8379-f443daa0fcfd" 
] , 
"userName": "jbadly" 
} 

,我想合併這兩個表中的記錄並顯示如下

{"id": "ae9aaaea-24b6-4880-9a81-d6ee34c82dde" , 
"password": "$2a$10$MqaQjif6bigsoYV82s/SXeWsQQ9.NnEPykw1L/nLcfOmWRryq8XJe" , 
"roles": ["admin" ,"client"] ,"userName": "james"} 

回答

1

你的問題是有點不清楚,但如果我理解正確:

r.db('my_db').table('users') 
    .map(function(row) { 
    return row.merge({ 
     roles: r.db('my_db').table('roles') 
     .getAll(r.args(row('roles'))) 
     .coerceTo('array') 
    }) 
    }) 
0

只是另一種解決方案:

r.table('users').merge({ 
    roles: r.row('roles').map(function(role) { 
     return r.table('roles').get(role)('Name') 
    }) 
    }) 

或重寫未完善的在較短的方式解決:

r.table('users').merge({ 
    roles: r.table('roles').getAll(r.args(r.row('roles')))('Name').coerceTo('ARRAY') 
    }) 
+1

大。這對我行得通。 –

+1

現在,如果用戶只有一個角色,那麼它會在「RqlRuntimeError:預期類型ARRAY但在STRING中找到」時拋出異常。 –