Ich habe kämpfen, um Merge
von gorethink
(RethinkDB des Fahrers in Go) gewöhnungsgo - Merge in 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)
Ich habe 3 Sammlungen: article
, quote
und user
Mit Die obige Funktion, die ich beabsichtige:
- Abfrage aller Angebotsdokumente von idUser
- Mit jedem Zitat, das ich bekommen, möchte ich seine jeweilige idArticle Feld verwenden, in Artikel Sammlung
- Nachdem sie das entsprechende Dokument mit idArticle abzufragen, ich benutze es Schlüsselwörter, die Dokumentfelder
- Schließlich abzufragen, fusionieren ich Keywords Array zu jedem Dokument Zitat
in JavaScript-API für RethinkDB, ich so umgesetzt:
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();
});
}
Aber ich habe es nicht geschafft das gleiche in gorethink zu tun. Wie kann ich den Wert Term
row.Field("idArticle")
erhalten und für spätere Abfragen und Merge
verwenden?