在应用程序启动时,我需要确保表的存在。
如果表不存在并需要创建,我还希望在表上创建辅助索引。
这很容易在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()函数是否是对多个写命令进行排序的正确方法?
谢谢
发布于 2016-09-01 07:16:31
是的,do是在ReQL中进行操作的正常方式。但是,r.Do作为branch的第三个参数是多余的;您可以直接将tableCreate调用放在那里。
https://stackoverflow.com/questions/39252553
复制相似问题