尝试使用datastore的命名空间
背景
在同一个项目的Datastore中需要将测试环境和生产环境的数据分开。在那时,我需要研究命名空间,所以将其整理成备忘录。
什么是命名空间?
使一個系统方便地在不同数据集上运行的机制。
例如,对于命名空间A,可以访问命名空间A专用的Datastore;对于命名空间B,可以访问命名空间B专用的Datastore。
Datastore还支持以下内容。
-
- Memcache
-
- Task Queue
- Search
请参考以下链接:https://cloud.google.com/appengine/docs/java/multitenancy/multitenancy
使用方法 (Shi Yong Fang Fa).
只需在context.Context中设置命名空间,即可准备就绪。
c := appengine.NewContext(r)
c = appengine.Namespace(c,"your-namaspace-name")
您只需传递支持命名空间的 context.Context 对象来访问 Datastore,并且可以轻松地切换数据。
func GetBeaconList(c context.Context) ([]Beacon, error) {
var tmp []Beacon
// 名前空間をセットしたcontextを渡すだけ
_, err := datastore.NewQuery("beacon").GetAll(c, &tmp)
if err != nil {
return nil, err
}
return tmp, nil
}