为了账号安全,请及时绑定邮箱和手机立即绑定

Google App Engine - 本地开发服务器和部署服务器之间的区别

Google App Engine - 本地开发服务器和部署服务器之间的区别

Go
波斯汪 2021-10-25 20:14:42
我正在 Google App Engine 上编写一个应用程序,并且我已经能够编写在本地运行并将数据放入本地数据存储区的代码。但是,当我将代码部署到 google 服务器时,没有数据放入数据存储区。我的主要指标是,没有任何内容被放入数据存储区,一是当我进入开发者控制台时,我被告知没有条目,二是当我运行获取数据的页面时,没有返回任何内容。我是否需要在 app.yaml 或开发者控制台中定义新种类,然后才能在生产数据存储上工作?这是我从数据存储中获取的 put 和 get 方法。同样,在测试环境中有效,在生产中无效,一切都编译得很好。package tweetdataimport (    "net/url"    "time"    "golang.org/x/net/context"    "google.golang.org/appengine/datastore"    "google.golang.org/appengine/log"    "github.com/ChimeraCoder/anaconda")const linkTweetKind string = "LinkTweet"const tweetKey string = "Tweets"const tweetKeyID string = "default_tweetstore"//LinkTweet contains the address extracted from a tweet and the original tweettype LinkTweet struct {    Address *url.URL    Tweet   anaconda.Tweet}//StoreTweet is a struct used for storing a tweet in the datastoretype StoreTweet struct {    Address     string    Text        string    TweetID     int64    CreatedTime time.Time    Retweets    int    Favorites   int}//TweetScore is a struct that shows the relative score of an address based on// it's populatritytype TweetScore struct {    Address    *url.URL    score      int    lastActive time.Time}//WriteLinkTweet writes a given Tweet to the datastorefunc WriteLinkTweet(tweet LinkTweet, c context.Context) error {    log.Infof(c, "Putting Tweet into datastore: %v", tweet.Tweet.Id)    key := datastore.NewIncompleteKey(c, linkTweetKind, getTweetKey(c))    created, _ := tweet.Tweet.CreatedAtTime()    store := &StoreTweet{Address: tweet.Address.String(),        Text:        tweet.Tweet.Text,        TweetID:     tweet.Tweet.Id,        CreatedTime: created,        Retweets:    tweet.Tweet.RetweetCount,        Favorites:   tweet.Tweet.FavoriteCount,    }    err := datastore.RunInTransaction(c, func(c context.Context) error {        _, err := datastore.Put(c, key, store)        log.Errorf(c, "Failed to write LinkTweet to datastore. %v", err.Error())        return err    }, nil)    return err}
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

您是否datastore:,noindexStoreTweet结构中的任何字段上使用?为了对任何字段运行任何查询,数据存储区必须首先索引您要查询的字段。所以不索引这些字段会导致查询返回 nil 而没有任何错误。首次运行查询后,您的开发服务器是否会在您的项目中自动创建 index.yaml 文件?生产数据存储使用此文件来决定应该索引哪些字段,所有未索引的字段将无法查询。根据您提供的信息,这就是我能想到的会导致您的查询返回空的所有信息。

为了进一步调试,我将浏览您的生产数据存储并确保您的数据结构正确,并且值设置为您期望的值。


查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信