我尝试使用以下查询在rethinkdb中对2个表进行连接:
r.db('testdb')
.table('eco')
.eqJoin('project_id', r.db('testdb').table('projects'))
.map(
function(){
r.row.merge(function(){
r.expr({'right': r.expr({'p_name': r.row['right']['name']})})
})
})
.without(r.expr({'right': r.expr({'id': True})}))
.without(r.expr({'right': r.expr({'name': True})}))
.zip()
I keep getting the following error:
TypeError:无法读取属性' name'未定义的
eco表上有一个名称字段以及项目表。
答案 0 :(得分:4)
您需要使用括号而不是方括号来选择字段。
r.db('testdb')
.table('eco')
.eqJoin('project_id', r.db('testdb').table('projects'))
.map(
function(doc){
return doc.merge(function(){
return {'right': {'p_name': doc('right')('name')}}
})
})
.without({'right': {'id': True}})
.without({'right': {'name': True}})
.zip()
网站说明:
r.row
- 它是一个或另一个,而不是两个。答案 1 :(得分:1)
我觉得这个符号更简洁:
r.db('testdb')
.table('eco')
.eqJoin('project_id', r.db('testdb').table('projects'))
.map((doc) => ({
left: doc('left'),
right: { p_name: doc('right')('name') }
}))
.zip()
鉴于您只需要p_name
表中的projects
。