4

これを使用してエンティティをロードしましたが、まだキーを使用できます。

type Post struct {
    Title    string
    Created  time.Time
    // ...
    key      *datastore.Key
}

func All(c appengine.Context) (*[]Post, error) {
    var p []Post
    q := datastore.NewQuery("Post").Order("-Created")
    k, err := q.GetAll(c, &p)
    if err != nil {
        return nil, err
    }
    for i := 0; i < len(p); i++ {
        p[i].key = k[i]
    }
    return &p, nil
}

k次に、 がと同じ順序になることを常に信頼できるかどうか疑問に思いましたp(つまり、k[0]は常に のキーですp[0])? 両方のスライスが追加を使用して構築されているため、私がそれを正しく理解していれば、appengine-go ソースはそれを示唆しています。確かに効きそうです。

私がしていることは安全ですか?より良い方法はありますか?

4

1 に答える 1

3

はい、GetAllによって返されるキーは、dst に追加された値と同じ順序になります。

于 2013-03-03T21:13:11.553 に答える