如何不在数据存储中存储 __key__
How to not store __key__ in datastore
下面是我如何将数据保存到数据存储
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
作为此 table 的键。
我该怎么做?
在保存或加载实体时使用数据存储名称“-”忽略该字段。
type UserDetails struct {
UserID string `datastore:"-"` // <-- change on this line
Name string
UserEmail string
}
根据以下内容,“key”必须是 *datastore.Key 类型,但您使用的是字符串类型。不知道有没有效果。
https://godoc.org/cloud.google.com/go/datastore#hdr-Key_Field
但是对于您想要实现的目标,您可以执行以下两项操作之一。将 UserID 更改为 "userID" 并且不指定标签或使用
用户 ID 字符串`数据存储:"-"`
这将阻止它被存储。
下面是我如何将数据保存到数据存储
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
作为此 table 的键。
我该怎么做?
在保存或加载实体时使用数据存储名称“-”忽略该字段。
type UserDetails struct {
UserID string `datastore:"-"` // <-- change on this line
Name string
UserEmail string
}
根据以下内容,“key”必须是 *datastore.Key 类型,但您使用的是字符串类型。不知道有没有效果。
https://godoc.org/cloud.google.com/go/datastore#hdr-Key_Field
但是对于您想要实现的目标,您可以执行以下两项操作之一。将 UserID 更改为 "userID" 并且不指定标签或使用
用户 ID 字符串`数据存储:"-"`
这将阻止它被存储。