为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
Smart猫小萌 2023-07-26 16:44:29
这是我将数据保存到数据存储的方式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作为这张桌子的钥匙。我怎样才能做到这一点?
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

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


type UserDetails struct {

    UserID    string `datastore:"-"` // <-- change on this line

    Name      string

    UserEmail string

}


查看完整回答
反对 回复 2023-07-26
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

根据以下内容,“ key ”必须是 *datastore.Key 类型,但您使用的是字符串类型。不知道有没有效果。

但对于您想要实现的目标,您可以做两件事之一。将 UserID 更改为“userID”并且不指定标签或使用

用户 ID 字符串`数据存储:"-"`

这将阻止它被存储。


查看完整回答
反对 回复 2023-07-26
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信