这是我将数据持久保存到数据存储的方式

type UserDetails struct {
    UserID    string `datastore:"__key__"`
    Name      string
    UserEmail string
}

func (c DataStoreClient) Put(ctx context.Context, orgID string, ud *UserDetails) (id int64, err error) {
    key := datastore.NameKey(userKind, ud.UserID, nil)
    key.Namespace = orgID

    k, err := c.client.Put(ctx, key, ud)
    if err != nil {
        return 0, err
    }
    return k.ID, nil
}

func (ud *DataStoreUserDetails) Save() ([]datastore.Property, error) {
    return datastore.SaveStruct(ud)
}

func (ud *DataStoreUserDetails) LoadKey(k *datastore.Key) error {
    ud.UserID = k.Name
    return nil
}

func (ud *DataStoreUserDetails) Load(ps []datastore.Property) error {
    return datastore.LoadStruct(ud, ps)
}

当我调用Put方法时,我能够将UserDetails成功存储在数据存储区中。但是,连同UserDetails中的所有列,我还可以看到__key__列。我不要我想保留UserID作为此表的键。

我怎样才能做到这一点?

最佳答案

保存或加载实体时,请使用数据存储区名称“-”忽略该字段。

type UserDetails struct {
    UserID    string `datastore:"-"` // <-- change on this line
    Name      string
    UserEmail string
}

关于go - 如何不在数据存储区中存储__key__,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58105298/

10-12 21:13