Чтение сплющенного объекта из облачного хранилища данных в Голанге - PullRequest
0 голосов
/ 24 апреля 2018
func (db *dataStore) AddAcceptance(ctx context.Context, req *acceptance.PolicyAcceptance) (uint64, error) {

accpKey := datastore.IncompleteKey("Acceptance", nil)

key, err := db.Put(context.Background(), accpKey, req);
if  err != nil {
    log.Fatalf("Failed to save Acceptance: %v", err)
}
accpKey = key
val := uint64(accpKey.ID)
return val, err
}



type PolicyAcceptance struct {
Id           string                     `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
PolicyNumber int64                      `protobuf:"varint,2,opt,name=policyNumber" json:"policyNumber,omitempty"`
Version      string                     `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
SignerData   *SignerData                `protobuf:"bytes,4,opt,name=signerData" json:"signerData,omitempty" datastore:",flatten"`
GroupID      int64                      `protobuf:"varint,5,opt,name=groupID" json:"groupID,omitempty"`
LocationID   int64                      `protobuf:"varint,6,opt,name=locationID" json:"locationID,omitempty"`
BusinessId   int64                      `protobuf:"varint,7,opt,name=businessId" json:"businessId,omitempty"`
AcceptedDate *google_protobuf.Timestamp `protobuf:"bytes,8,opt,name=acceptedDate" json:"acceptedDate,omitempty" datastore:",flatten"`
IssuerName   string                     `protobuf:"bytes,9,opt,name=issuerName" json:"issuerName,omitempty"`
Place        string                     `protobuf:"bytes,10,opt,name=place" json:"place,omitempty"`
}
type SignerData struct {
Name  string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"`
Type  string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"`
Id    int64  `protobuf:"varint,4,opt,name=id" json:"id,omitempty"`
}

хранилище данных: ", сгладить" сохраняет данные как сглаженные в хранилище данных. Имена свойств сглаживаются. как SignerData.Id как имя свойства, но когда оно читается из хранилища данных, как я могу отобразить его обратно в struct? Не удается выдать ошибку вроде:

SignerData.Id не может быть найден в качестве ключа в структуре. Ошибка: нет такого поле структуры.

func (db *dataStore) GetAcceptanceBySignerData(ctx context.Context, req *acceptance.SignerData) (*acceptance.ListOfPolicyAcceptance, error) {
query := datastore.NewQuery("Acceptance").Filter("SignerData.Id =", req.Id)
var accpArr acceptance.ListOfPolicyAcceptance
var err error
it := db.Run(ctx, query)
for {
    var accept acceptance.PolicyAcceptance

    _, err := it.Next(&accept)
    if err == iterator.Done {
        break
    }
    if err != nil {
        log.Fatalf("Error fetching : %v", err)
    }
    accpArr.AcceptanceList = append(accpArr.AcceptanceList, &accept)
}
return &accpArr, err
}
...