0
我有一個架構。唯一的處方是唯一性驗證。在貓鼬驗證過程中有沒有辦法引用當前模型的_id字段?
User.path("email").validate(hasUnique("email"), "uniqueness");
hasUnique
返回將由mongoose
被用於驗證值的唯一的功能。
function hasUnique(key) {
return function(value, respond) {
var query = {};
query[key] = /A regex used to look up the email/;
User.findOne(query, function(err, user) {
respond(!user);
}
}
}
這在創建新文檔時很有效。但是當我查詢一個文檔時,變異屬性然後調用save
,這個驗證被調用並失敗,因爲它在集合中看到它自己的電子郵件,並認爲這不是唯一的。
有沒有一種方法可以在從hasUnique
返回的驗證函數中排除文檔本身?我的想法是,我可以添加一個$ not謂詞來排除查詢中當前文檔的_id字段。
事後看來,這太明顯了笑。 – veidt