2016-09-30 144 views
1

我想創建一個DAO,將用戶保存到我的數據庫中。他們應該有唯一的登錄名,並且它有點問題,因爲mongo db沒有事務。我有一個用戶類,看起來像這樣:MongoTemplate插入狀態

@Document(collection = "users") 
public class User { 

@Id 
private String id; 

@Indexed(unique = true) 
private String username; 

... } 

,並在我的DAO我要保存新的用戶

mongoTemplate.insert(user); 

,但我怎麼能知道檢查結果發送迴應我的前端是否用戶創造成功了嗎?

+0

你不使用'UserRepository'任何理由嗎? – chrylis

+0

您的意思是:公共接口UserRepository擴展CrudRepository ?我用過,但我不知道如何在保存重複時返回錯誤代碼,現在我嘗試使用mongo模板 – Mont

+0

好吧,'擴展MongoRepository',但是。你有一個「唯一」的索引;如果您嘗試保存副本,存儲庫將引發異常。 – chrylis

回答

1

當唯一索引被違反時,API將拋出org.springframework.dao.DuplicateKeyException

示例代碼: -

try { 
      mongoOperations.insert(order); 
     } catch (DuplicateKeyException de) { 
      de.printStackTrace(); 
     } 

異常消息時,唯一索引違反: -

org.springframework.dao.DuplicateKeyException: { "serverUsed" : "127.0.0.1:27017" , "ok" : 1 , "n" : 0 , "err" : "E11000 duplicate key error collection: localhost.order index: user_1 dup key: { : \"good\" }" , "code" : 11000}; nested exception is com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "127.0.0.1:27017" , "ok" : 1 , "n" : 0 , "err" : "E11000 duplicate key error collection: localhost.order index: user_1 dup key: { : \"good\" }" , "code" : 11000}