これを使用してエンティティをロードしましたが、まだキーを使用できます。
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 ソースはそれを示唆しています。確かに効きそうです。
私がしていることは安全ですか?より良い方法はありますか?