Способ сделать это будет:
r.db('tedtalks').table('persons')
.getAll(/* select people here I suppose */)
.merge({
talks: r.row('talks').map(function (talk) {
return talk.merge({
talk: r.db('tedtalks').table('talks').get(talk('talk_id'))
});
})
});
Ваш результат будет выглядеть так:
[
{
id:1,
firstname:'My name',
talks[
{
talk_id:1,
since:2018-01-01,
talk: {
id: 1,
name: 'Talk about something'
}
},
{
talk_id:2,
since:2018-01-01,
talk: {
id: 2,
name: 'Talk about something else'
}
},
{
talk_id:3,
since:2018-01-01,
talk: {
id: 3,
name: 'Talk about nothing'
}
}
]
},
{
id:2,
firstname:'Other name',
talks[
{
talk_id:1,
since:2018-01-01,
talk: {
id: 1,
name: 'Talk about something'
}
}
]
}
]
В вызове .map
вы можете захотеть вернуть объект напрямую, чтобы избавиться от talk_id
:
return {
talk: r.db('tedtalks').table('talks').get(talk('talk_id')),
since: talk('since')
};
Или даже все на одном уровне (если ключи не перекрываются):
return r.db('tedtalks').table('talks').get(talk('talk_id')).merge({
since: talk('since')
});
Ну, вы поняли.