gpt4 book ai didi

java - 忽略在 Json 对象中传递的字段

转载 作者:行者123 更新时间:2023-11-30 05:31:56 25 4
gpt4 key购买 nike

我有一个名为 User 的 POJO,它也用于在 MongoDb 中插入文档。

@Data
@Document(collection = Constants.COLLECTION_USERS)
public class User {

public ObjectId _id;

public String userID;

public String email;

public String name;

public String sex;

public String dob;

public String photo;
//have more variables

}

我有一个简单的应用程序,用户通过提供 User 类中列出的数据子集进行注册。我的 Controller 中的register方法的签名如下。

public GenericResponse registerUser(@RequestBody User userRegistrationRequest)

可以注意到,我使用相同的 POJO 来进行注册请求。到现在为止一切都很好。我可以很好地保留数据用户对象。

此注册 API 仅用于保存一小部分用户数据。 MongoDb 文档中还会有其他信息,可以从其他一些 API 访问/保留这些信息。

假设用户已经注册了基本信息,并且还通过除注册信息之外的API保存了其他信息。

我如何创建一个 API,它可以使用相同的 User Pojo 再次从 User 文档中获取一些选择性数据?如果我调用存储库来提供特定用户 ID 的数据,它将为我提供映射到 User 类的整个文档。我不希望我的 API 提供文档中存储的所有信息。

一种方法是使用我想要的详细信息制作另一个 POJO,并使用 Converter 有选择地映射信息。但是,我想避免这种方法,因为我想使用同一个类。

第二种方法:修改 Mongo 查询以选择性地返回数据,如 docs 中给出的那样。 。但在这里我必须指定结果集中我想要的所有字段。这又是一个长度查询。

是否有更好的方法从对象中过滤掉数据?

最佳答案

How would I make an API which can just get me some selective data from the User document again using the same User Pojo?

晚上我想带我的女孩去餐厅,我该如何开一辆汽车去越野? 我不会 - 如果我拥有同一辆车来处理所有事情,我会在餐厅旁边看起来很愚蠢,在套房里出来,或者我会陷入沼泽。

Java最大的优势是object creation time - 你不应该害怕它。只需创建另一个模型用于注册,另一个作为 DTO 用于保存数据,另一个用于前端演示等

永远不要混合对象的职责。您将以类似的内容结束

@Entity
class ThePileOfShit {
@Id
private Long id;

@my.audit.framework.Id
private String anotherId;

@JsonIgnore
// just a front-end flag ignore
private boolean flag;

@Column
// not a field but getter because of any-weird-issue-you-want-to-put-here
public String getWeirdStuff() { ... }

// Useless converters
public ModelA getAsModelA() { ... }

public ModelB getAsModelB() { ... }

// etc
// etc
}

四种框架,五种技术 - 没有人知道发生了什么。

如果您害怕转换内容,请使用 ModelMapper或其他工具,但使 POJO 尽可能简单

关于java - 忽略在 Json 对象中传递的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346985/

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