go - 如何不在数据存储中存储 __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
这张桌子的钥匙。
我怎样才能做到这一点?
解决方案
保存或加载实体时,使用数据存储名称“-”忽略该字段。
type UserDetails struct {
UserID string `datastore:"-"` // <-- change on this line
Name string
UserEmail string
}
推荐阅读
- c# - DOCX 到 PDF:SaveAs2 与 ExportAsFixedFormat 与 PrintOut
- php - 访问不同页面上的变量的问题
- python - 将通用句子编码器保存到 Tflite 或将其提供给 tensorflow api
- angular - 在 RxJS 中捕获不同的错误
- python - 尽管异常在 PyQt5 中处理,但程序在 ConnectionError 上终止
- authentication - 如何在登录时将登录替换为帐户。[离子 5] -> 离子标签
- bootstrap-4 - 如何在 laravel 中导入多轮播项目滑块?
- azure - Azure 上的 IdentityServer 4 我们能否使用 Azure API 网关保护其端点
- python - 我想在 json body 元素中发布一个对象列表
- c# - 在 Xamarin.Form 页面之间传递 Int C#