1

Go API を使用して Google App Engine で遊んでいますが、あらゆることを試しましたが、データストアにあるデータを返すクエリを取得できません。Put()が期待どおりに機能し、次の場所から入手できる管理コンソールを調べると、エンティティがリスト可能/アクセス可能であることがわかります。dev_appserver.py

私が格納している構造体は、次のように定義されています。

type TweetData struct {
    Id int64 `datastore:",noindex" json:"id"`
    Text string `datastore:",noindex" json:"text"`
    Screen_name string `json:"screen_name"`
}

そして、それを照会するための私の呼び出しは次のとおりです。

func getDatastoreTweets(c appengine.Context, twitterUser string) []*TweetData {
    q := datastore.NewQuery("TweetData").Filter("Screen_name =", twitterUser).Order("-Id").Limit(10)

    var oldTweets []*TweetData
    if _, err := q.GetAll(c, &oldTweets); err != nil {
        fmt.Printf("Getall had non-nil error! %v\n", err)
    }   

    return oldTweets
}

このクエリの場合、errnil 以外になることはありませんが、コンソールに多くの結果があると表示された場合でも、常に 0 の結果が返されます。SDKが提供するゲストブックの例の後、 Filter呼び出しなしでも試しましたが、役に立ちませんでした。

キーに問題がある場合 (プロパティに対してクエリを実行しているため、正しく理解しているとは考えにくい)、への呼び出しPutは次のとおりです。

// tweetData passed in via parameter...
key := datastore.NewIncompleteKey(c, "TweetData", nil)
_, err := datastore.Put(c, key, &tweetData)

どんな助けでも大歓迎です、ありがとう!^_^

4

1 に答える 1

2

クエリは による順序付けを要求しますId descが、インデックス フィールドがインデックス化されていない場合は、次のいずれかを行う必要があります。

  • TweetData アノテーションを Id フィールドのインデックスに書き換えます。

Id int64 `json:"id"`

  • クエリの Order 句を削除します。

q := datastore.NewQuery("TweetData").Filter("Screen_name =", twitterUser).Limit(10)

于 2012-09-18T15:43:26.350 に答える