数据存储区:获取时的实体类型无效

datastore: invalid entity type on get

嘿,我正在尝试通过传递 id 来获取实体,

但我好像得到了一个 nill 指针 我尝试用几种方式初始化实体,但结果是一样的。

我正在尝试尽可能多地创建我的服务器 to-do

我在这里缺少什么?

type UserManager struct {
    users []*Users
    user  *Users
}

func NewUserManager() *UserManager {
    return &UserManager{}
}

 func (userManager *UserManager) putUser(c appengine.Context, u *Users) (usreRes *Users, err error) {

key, err := datastore.Put(c, datastore.NewIncompleteKey(c, "users", nil), u)
if err != nil {
    return nil, err
 }
c.Debugf("file key inserted :%#v", key)
return u, nil
}


func (userManager *UserManager) getUserById(userKey string, c appengine.Context) (usreRes *Users, err error) {

entity_id_int, err := strconv.ParseInt(userKey, 10, 64)

if err != nil {
    return userManager.user, err
}
k := datastore.NewKey(c, "users", "", entity_id_int, nil)

userRes := new(Users)
err = datastore.Get(c, k, &userRes)

//err = datastore.Get(c, k, &userManager.user)

if err != nil {
    return userManager.user, err
}

//return userManager.user,nil
return userRes, nil
}

这是因为 datastore.Get(c, k, "pointer") 需要一个指向结构的指针作为它的第三个参数,而你传递的是一个指针的指针 **userRes

userRes := new(Users)

你正在创建一个指向结构

的指针

所以你应该这样做:

datastore.Get(c, k, userRes)

没有符号,因为使用 new 关键字你已经在创建一个指针