【发布时间】:2019-03-09 16:09:22
【问题描述】:
我想向 Postman 发送一个 POST 请求,该请求创建一个 Purchase 对象并将其保存在数据库中。
我的班级购买:
@Document(collection = "purchases")
public class Purchase {
@Id
private String id;
@DBRef
private User buyer;
@DBRef
private List<File> FilesToPurchase;
private Long timestamp;
public Purchase() { }
public Purchase(User buyer, List<File> filesToPurchase) {
this.buyer = buyer;
FilesToPurchase = filesToPurchase;
}
// Getters and setters not posted here.
我想在数据库中插入一个已经存在的用户“买家”完成的新购买,该用户想要购买已经存在的文件“FilesToPurchase”列表。
我的控制器中有一个 POST 函数,它使用注释 @RequestBody 接收购买对象,但到目前为止,由于接收到空的购买对象,我得到了 NullPointerExceptions。
我不知道如何处理@DBRef 注释。在 Postman 中,我尝试发送这样的 JSON:
{
"buyer": {
"$ref":"users",
"$id" : "ObjectId('5bb5d6634e5a7b2bea75d4a2')"
},
"FilesToPurchase": [
{ "$ref":"files",
"$id" : "ObjectId('5bb5d6634e5a7b2bea75d4a5')"
}
]
}
【问题讨论】:
-
重命名字段“FilesToPurchase”并设置为“filesToPurchase”以匹配java约定并尝试这个{“buyer”:{“id”:“5bb5d6634e5a7b2bea75d4a2”},“filesToPurchase”:[{“id” :“5bb5d6634e5a7b2bea75d4a5”}]}
-
@VladMamaev 感谢您的回复。我更改了名称并按照您告诉我的方式进行操作,在我的 post 函数中创建了对象 Purchase,但里面的“buyer”和“filesToPurchase”是空的,除了字段“id”。这种行为好吗?是因为它只存储引用吗?
标签: spring mongodb spring-boot postman