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

嘿,我试图通过传递 id 来获取实体,


但看起来我得到了一个nill 指针, 我试图以几种方式初始化实体,但结果是一样的。


我正在尝试尽可能多地创建我的服务器,就像这个示例 待办事项


我在这里缺少什么?


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

}


慕仙森
浏览 185回答 1
1回答

大话西游666

这是因为datastore.Get(c, k, "pointer")期望一个指向 struct 的指针作为它的第三个参数,而您正在传递一个指针的指针**userResuserRes := new(Users)在那里你正在创建一个指向 struct see的指针所以你应该这样做:datastore.Get(c, k, userRes)没有&符号,因为使用 new 关键字您已经创建了一个指针
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go