2016-08-31 6 views
0

アプリケーションの起動時にテーブルが存在することを確認する必要があります。Rethinkdb、Go:1つのReQL文でテーブルとインデックスを確実に

テーブルが存在しないため、テーブルを作成する必要がある場合は、テーブルにセカンダリインデックスを作成することもできます。

Goで簡単に実行できますが、ReQLで1つのステートメントで実行したいと思います。だから私はこの思い付いた:

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の3番目の引数であるr.Doは余計ですが、そこに直接tableCreateを呼び出すことができます。

関連する問題