我们假设我有一张名为bookshelf
的表格。我创建了一个书架文档,其中包含一组ID,这些ID引用另一个名为books的表中的书籍。我正在尝试使用getAll
和merge
来合并查询中的文档,但我似乎无法将所有元素传递到getAll
。我相信getAll会将ID数组解释为单个文字"对象"。
书架文件:
{
id: 'MyShelf'
books: [ 1, 2, 6, 9 ]
}
书籍文件:
{
id: 1
name: 'Merging in RethinkDB for Dummies'
}
我的查询:
r.db('test').table('bookshelf').merge(function(bookshelf) {
return {
booksOnShelf: r.table('books').getAll(bookshelf('books')).coerceTo('array')
}
})
预期结果:
{
id: 'MyShelf'
books: [ 1, 2, 6, 9 ],
booksOnShelf: [
{ id: 1, name: 'Merging in RethinkDB for Dummies' },
{ id: 2, name: 'Cool Title!' },
...
]
}
实际结果:
{
id: 'MyShelf'
books: [ 1, 2, 6, 9 ],
booksOnShelf: [ ]
}
答案 0 :(得分:6)
事实证明,我需要使用r.args
将数组转换为实际参数,以便与getAll
函数一起使用。
这是正确的查询:
r.db('test').table('bookshelf').merge(function(bookshelf) {
return {
booksOnShelf: r.table('books').getAll(r.args(bookshelf('books'))).coerceTo('array')
}
})
结果:
{
"books": [ 1, 2 ],
"booksOnShelf": [{
"id": 1,
"title": "RethinkDB for Dummies"
}, {
"id": 2,
"title": "Awesome Title!"
}],
"id": "MyShelf"
}