2016-03-29 39 views
0

我一直在努力去適應的gorethinkMerge(RethinkDB在圍棋司機)去 - 合併圍棋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個類別:articlequote,並且user

隨着上述功能我打算:

  • 查詢idUser所有報價文件
  • 每一次報價,我得到的,我想用其各自idArticle領域的文章收集
  • 在查詢使用idArticle得到適當的文檔後,我用它來查詢該文檔的關鍵字字段
  • 最後,我合併的關鍵字數組每個報價文件

在的JavaScript API RethinkDB,我實現這樣的:

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。如何獲得Termrow.Field("idArticle")的值並將其用於以後的查詢和Merge

回答

0

非常感謝。我設法解決恐慌錯誤

真正的答案是:

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)恐慌

1

複製我的回答從https://github.com/dancannon/gorethink/issues/291

你應該能夠將您的JS查詢使用子查詢轉換去不調用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"), 
     }, 
    } 
})