App Engine go context.Context没有命名空间

时间:2016-12-09 13:40:58

标签: google-app-engine go google-cloud-datastore

ctx, ctxErr := appengine.Namespace(ctx, "MyContext")获取上下文后,我希望ctx名称空间填充MyContext

代码

import (
...
"golang.org/x/net/context"
"google.golang.org/appengine"
)


ctx := appengine.NewContext(r)
ctx, ctxErr := appengine.Namespace(ctx, "MyContext")
if ctxErr != nil {
  log.Errorf(ctx, "Failed to obtain custom namespace context, error:%s", ctxErr.Error())
  //use default if all else fails
  ctx = appengine.NewContext(r)
}

但事实并非如此,因此导致所有名称空间感知API都使用默认名称空间。

转储ctx产生以下内容(参见黄色边界输出)

enter image description here

示例应用

使用您的项目ID填充projectID := "",确保您已在开发环境中执行了身份验证并运行go run /example/app/main.go

Example App

1 个答案:

答案 0 :(得分:2)

google api go libs的混合,导致了这个问题。

Long Answer

简答

Google Cloud API库有两种不同的风格,问题是由下面的库中的lib功能混合引起的。

google-cloud-go 推荐

google-api-go-client