尝试使用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
}
bannerAds