我需要确保在应用程序启动时存在表。
如果表不存在且需要创建,我还想在表上创建二级索引。
在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 :(得分:0)
是的,do
是您在ReQL中对操作进行排序的正常方式。 r.Do
作为branch
的第三个参数是多余的;您可以直接将tableCreate
电话放在那里。