Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何使用go lang在appengine中设置名称空间?_Google App Engine_Go_Google Cloud Datastore - Fatal编程技术网

Google app engine 如何使用go lang在appengine中设置名称空间?

Google app engine 如何使用go lang在appengine中设置名称空间?,google-app-engine,go,google-cloud-datastore,Google App Engine,Go,Google Cloud Datastore,我可以插入具有默认名称空间的实体,但我需要实现多租户。下面是我用来插入实体和获取实体的代码,但我需要为每个实体分配名称空间。因此,我遵循下面的链接,但我无法设置名称空间。请帮助我修复 我发现有两个包裹 1.“cloud.google.com/go/datastore”-通过使用这个包,我能够插入不带名称空间的实体 2.“google.golang.org/appengine/datastore”-我从谷歌的多租户链接中找到了这个包, 我很清楚,我需要使用此软件包来分配名称空间,但在使用此软件包

我可以插入具有默认名称空间的实体,但我需要实现多租户。下面是我用来插入实体和获取实体的代码,但我需要为每个实体分配名称空间。因此,我遵循下面的链接,但我无法设置名称空间。请帮助我修复

我发现有两个包裹

1.“cloud.google.com/go/datastore”-通过使用这个包,我能够插入不带名称空间的实体 2.“google.golang.org/appengine/datastore”-我从谷歌的多租户链接中找到了这个包, 我很清楚,我需要使用此软件包来分配名称空间,但在使用此软件包时出现错误,请帮助我修复此问题

package main

import (
    "fmt"
    "net/http"

    "google.golang.org/appengine"
    "google.golang.org/appengine/datastore"
)

type user struct {
    UserName string
    Password string
    First    string
    Last     string
}

func main() {
    fmt.Println("hi")
    http.HandleFunc("/", handle)
    http.Handle("/favicon.ico", http.NotFoundHandler())
    http.ListenAndServe(":8080", nil)

}

func handle(w http.ResponseWriter, r *http.Request) {
    ctx := appengine.NewContext(r)

    k := datastore.NewKey(ctx, "user", "stringID", 0, nil)
    e := new(user)
    if err := datastore.Get(ctx, k, e); err != nil {
        http.Error(w, err.Error(), 500)
        return
    }

    old := e.First
    e.First = r.URL.Path

    if _, err := datastore.Put(ctx, k, e); err != nil {
        http.Error(w, err.Error(), 500)
        return
    }

    w.Header().Set("Content-Type", "text/plain; charset=utf-8")
    fmt.Fprintf(w, "old=%q\nnew=%q\n", old, e.First)
}
错误:

While running the code from local host I am getting below error

E:/GoWork/src/google.golang.org/appengine/internal/api.go:270 +0x186
google.golang.org/appengine.WithContext(0xd60000, 0xc04200c320, 0xc042174000, 0xd60000, 0xc04200c320)
E:/GoWork/src/google.golang.org/appengine/appengine.go:73 +0x46
google.golang.org/appengine.NewContext(0xc042174000, 0x987460, 0xc04216c034)
E:/GoWork/src/google.golang.org/appengine/appengine.go:66 +0x6e
main.handle(0x959da0, 0xc042180000, 0xc042174000)
E:/GoWork/src/simplystdatastore/main.go:27 +0x4a 
net/http.HandlerFunc.ServeHTTP(0x7e49c8, 0x959da0, 0xc042180000, 0xc042174000)
c:/go/src/net/http/server.go:1942 +0x4b
net/http.(*ServeMux).ServeHTTP(0x987460, 0x959da0, 0xc042180000, 0xc042174000)
c:/go/src/net/http/server.go:2238 +0x137
net/http.serverHandler.ServeHTTP(0xc042075550, 0x959da0, 0xc042180000, 0xc042174000)
c:/go/src/net/http/server.go:2568 +0x99
net/http.(*conn).serve(0xc0421280a0, 0x95a3a0, 0xc04216e040)
c:/go/src/net/http/server.go:1825 +0x619
created by net/http.(*Server).Serve
c:/go/src/net/http/server.go:2668 +0x2d5 

你能给我们看一些你试过但没用的代码吗?你链接到的多租户文档使用
google.golang.org/appengine/datastore
,但你使用的是
cloud.google.com/go/datastore
。。。虽然这两个软件包看起来几乎相同,但它们并不相同,因此很有可能无法让名称空间工作的原因是,这取决于您对名称空间的看法,因为您阅读了错误的文档,或者使用了错误的软件包。是的,我发现了相同的东西1。“cloud.google.com/go/datastore”-通过使用此包,我可以插入不带命名空间2的实体。“google.golang.org/appengine/datastore”-我从google的多租户链接中找到此包,我很清楚,我需要使用这个包来分配名称空间,但在使用这个包时,我遇到了错误堆栈跟踪显示文件
appengine/internal/api.go的行
270
,所以转到这里阅读注释。确保您的本地应用程序在
appengine
环境中运行。此外,您遇到的新错误与原始问题不同,因此您应该创建一个新问题以获得更多帮助。好的,我将在几分钟内为您的问题提供答案。您可以向我们展示一些您尝试过但不起作用的代码吗?您链接到的多租户文档使用
google.golang.org/appengine/datastore
但您使用的是
cloud.google.com/go/datastore
。。。虽然这两个软件包看起来几乎相同,但它们并不相同,因此很有可能无法让名称空间工作的原因是,这取决于您对名称空间的看法,因为您阅读了错误的文档,或者使用了错误的软件包。是的,我发现了相同的东西1。“cloud.google.com/go/datastore”-通过使用此包,我可以插入不带命名空间2的实体。“google.golang.org/appengine/datastore”-我从google的多租户链接中找到此包,我很清楚,我需要使用这个包来分配名称空间,但在使用这个包时,我遇到了错误堆栈跟踪显示文件
appengine/internal/api.go的行
270
,所以转到这里阅读注释。确保您的本地应用程序在
appengine
环境中运行。另外,您遇到的新错误与原始问题不同,因此您应该创建一个新问题以获得更多帮助。好的,我将在几分钟内提供您问题的答案。