에 중첩 된 구조체를 넣어하지 않습니다 account Account
의 내용을 데이터 저장소 (Put(ctx, key, &account
)에 저장하기 전에 바로 인쇄하고 인쇄하면 모든 AppUser
정보를 볼 수 있지만 나중에 Get
사용자는 AppUser
정보가 없습니다 (단지 {[]}
으로 표시됨) .데이터 저장소는 구조체는 다음과 같이 이동
나는 내가 전에 아무 문제없이 데이터 저장소에 중첩 된 구조체 조각을 저장 한 매우 확신, 그래서 .. 그 원인이 될 수있는 것과 같은 매우 혼란 스러워요
올리기 FUNC :
func PutAccount(ctx context.Context, acc Account) (*datastore.Key, error) {
if isValidUsername(acc.Username) != true {
return nil, errors.New("Invalid username.")
}
var hashedPassword []byte
if acc.RegistrationTime.IsZero() {
var err error
hashedPassword, err = bcrypt.GenerateFromPassword(acc.Password, 12)
if err != nil {
return nil, err
}
} else {
hashedPassword = acc.Password
}
account := Account{
Username: strings.ToLower(acc.Username),
Password: hashedPassword,
RegistrationTime: time.Now(),
AppUser: acc.AppUser}
fmt.Println("PutAccount, account:", account) // before saving it prints the AppUser without problems
key := datastore.NameKey("Account", account.Username, nil)
return database.DatastoreClient().Put(ctx, key, &account)
}
가져 오기 FUNC :
func GetAccount(ctx context.Context, key *datastore.Key) (Account, error) {
var account Account
err := database.DatastoreClient().Get(ctx, key, &account)
if err != nil {
return account, err
}
return account, nil
}
데이터를 가져 와서 사용하는 코드를 보여주십시오. 'Get'에 대한 구조체 구조체를 시도해 볼 수도 있습니다. – Marc
https://stackoverflow.com/questions/14308530/nested-structs-on-gae-datastore-using-go?rq=1 – Marc
@Marc에서 편집을 참조하십시오. 나는 또한 그 대답을 발견했지만 문서가 매우 혼란스럽고 복잡하다는 것을 알았습니다. – fisker