我下面這個春天指南: https://spring.io/guides/gs/accessing-mongodb-data-rest/如何使用Spring基於超媒體的RESTful前端在MongoDB數據庫中使用手動標識發佈文檔?
一切都是完美的,但是如果我要發佈具有手動編號的文件,我不能這樣做。
以下是我所做的:
我插入一個文件從蒙戈外殼由命令db.person.insert({"_id": "111111", "firstName" : "Vikas", "lastName" : "Prasad"});
這工作得很好,如果我在http://localhost:8080/people
從郵差做GET
,我可以看到的人用在具有自HREF響應ID 111111
文檔作爲http://localhost:8080/people/111111
但是,如果我送從郵遞員POST
請求在http://localhost:8080/people
與身體爲{"_id": "222222", "firstName" : "Aadish", "lastName" : "Patodi"}
,第e文檔正在插入自動ID而不是222222
。因爲很明顯,我無法通過執行GET
在http://localhost:8080/people/222222
來訪問此文檔,這與我在shell中使用insert()
插入帶有手動標識的文檔的情況不同。相反,我必須點擊GET
http://localhost:8080/people/57bc29ada3fab115cc9b546b
才能獲取此第二個文檔。
只是爲了檢查我是否POST
再次{"_id": "222222", "firstName" : "Aadish", "lastName" : "Patodi"}
,它再次插入一個新的自動生成的id:http://localhost:8080/people/57bc2bdaa3fab115cc9b546c
。這意味着MongoDB甚至沒有在看_id
,否則它一定會拋出duplicate key error
。
我試着搜索各種來源。我所能找到的是在後端分別在JAVA中實現數據訪問代碼並調用相應的MongoDB方法。
我的問題是:
就像在他們沒有定義任何Java後端代碼從MongoDB的數據訪問的自動識別文件執行每一個操作給定的教程,有沒有辦法做手工相同身份證件? 或者僅僅爲了這個用例,我必須在後端實現數據訪問代碼?
我正在使用CorsFilter來處理交叉來源請求。
編輯:
下面是Person
類:
package hello;
import org.springframework.data.annotation.Id;
public class Person {
@Id private String id;
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
我曾嘗試:
- >添加getter和setter方法id
屬性
- >重命名id
到employeeNumber
- >重命名id
到employeeNumber
並添加getter和setter爲employeeNumber
無上述三項解決的問題。
可以粘貼你的代碼嗎?一個你將集合保存到db的地方,還有一個地方是你聲明人pojo將春天的id字段映射到mongodb的地方? – user641887
看起來像你的_id字段映射不正確。 – user641887
從指南中可以看出,沒有明確的將收集保存到分貝。這個集合是在Postman的第一個'POST'或第一個'insert()'從shell中創建的,以先發生者爲準。 人pojo與在指南中相同。但是我添加了一個編輯。 請看看。 –