私は2つの機能を持っています.1つはエンティティをデータストアに書き込み、もう1つはデータストアに取り込むものです。私がdatastore.GetAll()
機能を私の検索に使用すると結果が返されません。私は、その文章が正しく動作しているかどうかを確認するテストをしています。検索がうまくいかない理由に関するアイデアはありますか?ここでデータストアで結果が得られませんゴランのゲットアイル
は、アプリケーション・コードである:ここで
package tracker
import (
"fmt"
"appengine"
"appengine/datastore"
)
type User struct {
Email string
}
func createUser(ctx appengine.Context, email string) (*datastore.Key, error) {
u := &User{
Email: email,
}
incompleteKey := datastore.NewIncompleteKey(ctx, "User", nil)
key, err := datastore.Put(ctx, incompleteKey, u)
if err != nil {
return key, err
}
return key, nil
}
func getUser(ctx appengine.Context, email string) (u *User, e error) {
users := []User{}
q := datastore.NewQuery("User").Filter("Email", email)
keys, err := q.GetAll(ctx, &users)
if err != nil {
return nil, err
}
fmt.Printf("KEYS: %v", keys)
return &users[0], nil
}
は、テストコードです:そのクエリで結果整合性がを適用するため
package tracker
import (
"fmt"
"testing"
"appengine/datastore"
"appengine/aetest"
)
// This test is passing.
func TestCreateUser(t *testing.T) {
ctx, err := aetest.NewContext(nil)
if err != nil {
t.Fatal(err)
}
defer ctx.Close()
email := "[email protected]"
newKey, err := createUser(ctx, email)
if err != nil {
t.Errorf("Failed to create a new user: %v", err)
}
u := User{}
datastore.Get(ctx, newKey, &u)
if u.Email != email {
t.Errorf("Expected email to be %s, found %v.", email, u.Email)
}
}
func TestGetUser(t *testing.T) {
ctx, err := aetest.NewContext(nil)
if err != nil {
t.Fatal(err)
}
defer ctx.Close()
email := "[email protected]"
newKey, err := createUser(ctx, email)
fmt.Printf("key, %v; ", newKey)
u, err := getUser(ctx, newKey)
fmt.Printf("user, %v; error: %s", u, err)
if u.Email != email {
t.Error("Expected email to be %s, found %v.", email, u.Email)
}
}
感謝を! – katkinson
@katkinsonそれが働いたので、適切なことは、左側の隣にあるチェックマークをクリックすることで答えを受け入れるようにマークすることです。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workこれは、将来の読者がその答えがその問題を解決したことを知りましょう。 – sberry