gpt4 book ai didi

java - GAE/J : how do I get a User object from the user-id? 替代 : how come I can't set the nickname on a User object?

转载 作者:行者123 更新时间:2023-11-29 06:01:41 25 4
gpt4 key购买 nike

假设在 Java Google App Engine (GAE/J) 中,我使用 com.google.appengine.api.users.UserService 获取当前用户的用户对象。

我想把这个用户的信息发送给客户端;但是,由于我使用的是 Google Web Toolkit (GWT),我需要一个可以序列化的对象,而 User 不是其中之一,因为它属于服务器包。

因此,我在我的 GWT 共享目录中创建了一个名为 UserStuff 的新类,我将 User 的字段复制到 UserStuff 的实例中并将其发送给客户端。

稍后客户端将 UserStuff 对象发回给我,我想将用户附加为实体的属性。我能找到的创建 User 对象的唯一方法是自己调用 User 的构造函数;也就是说,UserService API 中的任何内容都无法仅通过用户 ID(从 User.getUserId() 获取)为我获取完整的用户对象 https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/UserService

所以我使用 User 的构造函数创建了一个 User 对象。这些构造函数都不允许我在用户上设置昵称字段,也没有这样做的方法! https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/User

现在,我可以改为让客户端发回一个 token ,说“获取当前用户并使用它”,但这很笨拙。此外,如果我有多个用户附加到它们的实体并且我想将它们发送给客户端并让客户端发回更多对象以放入应该有其他用户附加到该实体的数据存储区,那就更成问题了.

一种方法是为每个用户创建一个 UserStuff 实体,当我将用户作为当前用户时,将用户作为该用户的 UserStuff 对象上的一个字段以及用户的 !user-id 归档。然后,当我想要用户 ID 的 User 对象时,我可以获得该用户 ID 的 UserStuff 对象,然后将用户的 User 对象作为 UserStuff 对象的属性获取。或者我可以将昵称放在 UserStuff 对象上。然而,这是很多额外的数据存储流量,只是因为我无法在用户对象上设置昵称。

最佳答案

除非您将原始用户对象存储在数据存储区中,否则无法获取给定 ID 的用户对象。同样,也无法更改用户的昵称。

User对象只是为了封装登录用户的基本信息而设计的;如果你想要额外的信息或行为(比如用户设置的昵称),你应该创建你自己的 UserInfo 模型,并使用它来代替。您可以将其键名设置为用户对象的用户 ID,这样您就可以通过简单的获取操作找到登录用户的 UserInfo。

关于java - GAE/J : how do I get a User object from the user-id? 替代 : how come I can't set the nickname on a User object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com