如何不在数据存储中存储 __key__

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


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作为这张桌子的钥匙。


我怎样才能做到这一点?


Smart猫小萌
浏览 115回答 2
2回答

函数式编程

使用数据存储名称“-”在保存或加载实体时忽略该字段。type UserDetails struct {&nbsp; &nbsp; UserID&nbsp; &nbsp; string `datastore:"-"` // <-- change on this line&nbsp; &nbsp; Name&nbsp; &nbsp; &nbsp; string&nbsp; &nbsp; UserEmail string}

一只甜甜圈

根据以下内容,“ key ”必须是 *datastore.Key 类型,但您使用的是字符串类型。不知道有没有效果。但对于您想要实现的目标,您可以做两件事之一。将 UserID 更改为“userID”并且不指定标签或使用用户 ID 字符串`数据存储:"-"`这将阻止它被存储。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go