我一直在努力适应Merge
的gorethink
(Go中RethinkDB的驱动程序)
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)
我有3个集合:
article
,quote
和user
通过以上功能,我打算:
在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();
});
}
但是我仍然没有在gorethink中做同样的事情。如何获得
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"),
},
}
})
关于javascript - go-在Go RethinkDB中合并,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36287265/