2016-08-31 31 views
0

我需要確保應用程序啓動時存在表。Rethinkdb,Go:確保一個ReQL語句中的表和索引

如果表不存在並且需要創建,我還希望在表上創建二級索引。

它很容易在Go中完成,但我想在一個語句中使用ReQL。所以我想出了這個:

func ensureTableIndex(ses *r.Session, name string, index string) (err error) { 
    err = r.TableList().Contains(name).Do(r.Branch(r.Row, r.Expr(nil), r.Do(func() r.Term { 
     return r.TableCreate(name).Do(func() r.Term { 
      return r.Table(name).IndexCreate(index) 
     }) 
    }))).Exec(ses) 
    return 
} 

似乎通過測試。

我的問題是這是否是一種正確/有效的方式來創建表和索引?是否正在使用ReQL Do()函數正確排序多個寫入命令?

感謝

回答

0

呀,do是您在ReQL操作序列的正常方式。作爲branch的第三個參數的r.Do是多餘的,但是;您可以直接撥打tableCreate

相關問題