在Go RethinkDB中合并
Merge in Go RethinkDB
我一直在努力适应gorethink
的Merge
(RethinkDB在Go中的驱动程序)
result,err:=r.Table("quote").GetAllByIndex("idUser",idUser).
OrderBy(r.Desc("created_at")).Merge(func(row r.Term) interface{}{
res,_:=r.Table("article").Get(row.Field("idArticle")).Run(session)
// TODO
return map[string]interface{}{
// TODO
}
}).Run(session)
我有三个集合:article
、quote
和user
通过以上功能,我打算:
- 按idUser查询所有报价单
- 对于我得到的每个报价,我想使用其各自的idArticle字段在文章集合中进行查询
- 在使用idArticle获得适当的文档后,我使用它来查询该文档的关键字字段
- 最后,我将关键字数组合并到每个引用文档中
在RethinkDB的JavaScript API中,我实现了如下:
findAllByUser = function(idU){
return r.table(table)
.filter({idUser: idU})
.orderBy(r.desc('created_at'))
.merge(function(quote){
var article = r.table('article').get(quote('idArticle'));
return {
tags: {keywords: article('keywords')}
}
})
.run(connection)
.then(function(result){
return result.toArray();
});
}
但我仍然没能在goresink中做到这一点。如何获取Term
row.Field("idArticle")
的值,并将其用于以后的查询和Merge
?
从https://github.com/dancannon/gorethink/issues/291
您应该能够通过使用子查询将JS查询转换为Go,而无需调用Run
。例如:
r.Table(table)
.Filter(map[string]interface{}{"idUser": idU})
.OrderBy(r.Desc("created_at"))
.Merge(func(quote r.Term){
article := r.Table("article").Get(quote.Field("idArticle"))
return map[string]interface{}{
"tags": map[string]interface{}{
"keywords": article("keywords"),
},
}
})
非常感谢。我设法解决了的恐慌错误
真正的答案是:
result,err:=r.Table("quote").Filter(r.Row.Field("idUser").Eq(idUser)).
OrderBy(r.Desc("created_at")).
Merge(func(quote r.Term) interface{}{
fmt.Println(quote.Field("idArticle"))
article:=r.Table("article").Get(quote.Field("idArticle"))
return map[string]interface{}{
"tags":map[string]interface{}{
"keywords":article.Field("keywords"),
},
}
}).
Run(config.Connection())
我很恐慌,因为昨晚光标结果的返回地址声明:它是:var all map[string]interface{}
虽然应该是:var all []interface{}
然后它在err=result.All(&all)
中惊慌失措
相关文章:
- JQuery合并了keyup和focusout两个函数
- JSON重构(合并内容)与javascript
- Javascript-根据赋值顺序,按键合并对象数组
- 合并两个数组,重新调整循环js
- 如何合并不同集合的游标并按日期排序
- 合并TinyMCE(jQuery插件)文件
- 如何循环通过2个对象数组并通过匹配id进行合并
- 将两个Json提要合并为一个,并按时间排序
- 将项目履行与高级模板合并,并通过电子邮件发送至Netsuite 2.0
- DataTables合并了两个独立表中的jQuery/Javascript函数
- 承诺合并流
- 如何使用javascript合并两个对象数组
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- 可以合并或嵌套ES6导入
- 在rxjs中巧妙的蒸汽可观察合并
- mandrill合并标记不接受变量值
- 如何合并数组中的重复项
- 如何从合并的结果集中提取数组
- 将javascript对象(属性+值)合并到一个对象中
- 在Go RethinkDB中合并