id(自動採番)をキーとしたkindに対して、idを指定したデータを取得したいのですが、うまく取得できません。
結果は、Nullが返ってきます。
ソース
go
1package main 2 3import ( 4 "context" 5 "fmt" 6 7 "cloud.google.com/go/datastore" 8 "google.golang.org/api/iterator" 9) 10 11type Data struct { 12 ID int64 `datastore:"-"` 13 Name string `datastore:"name"` 14} 15 16func main() { 17 ctx := context.Background() 18 projectID := "projectxxxx" 19 kind := "kindxxxx" 20 keyID := 1234567890123456 21 client, _ := datastore.NewClient(ctx, projectID) 22 defer client.Close() 23 24 query := datastore.NewQuery(kind).Filter("id =", keyID) 25 it := client.Run(ctx, query) 26 messages := make([]*Data, 0, 100) 27 for { 28 var msg Data 29 key, err := it.Next(&msg) 30 if err == iterator.Done { 31 break 32 } else if err != nil { 33 panic(err) 34 } 35 msg.ID = key.ID 36 messages = append(messages, &msg) 37 } 38 39 fmt.Println(messages) 40}
id の代わりに、[key]を利用しても結果は同じでした。
query := datastore.NewQuery(kind).Filter("__key__ =", keyID)
id の代わりに Name を指定すると、想定どおりに動作します。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。