本篇文章向大家介绍《从数据库中检索自定义对象》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。
问题内容我有一个数据存储表,就像这样
name/id | useremail | userrole | userpermissions
------------------------------------------------------
json 中的 userrole
属性是 string
。然而,在 go
代码中,它是一个类型
type userdetails struct {
nameid string
useremail string
userrole usertype
userpermissions string //json??
}
type usertype string
const (
unknownuserrole usertype = "unknown"
siteadmin usertype = "site_admin"
sitehr usertype = "site_hr"
)
func (ut *usertype) string() string {
return string(*ut)
}
func usertypefromstring(usertype string) usertype {
switch usertype {
case "site_admin":
return siteadmin
case "site_hr":
return sitehr
default:
return unknownrole
}
}
现在,我必须读取给定 org
的所有用户。我正在使用此代码来执行此操作
func (c DataStoreClient) GetUserDetailsByOrg(ctx context.Context, orgName string) ([]*UserDetails, error) {
var userDetails []*UserDetails
q := datastore.NewQuery(userDetailsKind).
Namespace(orgName)
keys, err := c.client.GetAll(ctx, q, &userDetails)
for i, key := range keys {
userDetails[i].NameID = key.Name
}
return userDetails, err
}
如何使用上述代码将 usertype
从数据存储读取到 userdetails.usertype
枚举中?
解决方案
问题中的代码按原样工作。无需按照其他答案中的建议实现 PropertyLoadSaver 或循环返回的实体。
自定义数据类型是字符串。数据存储包将所有字符串类型编组到数据存储字符串或从数据存储字符串编组。它确实有效。
本篇关于《从数据库中检索自定义对象》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!