2014-01-07 20 views
0

考慮一個字段email,我想設置和查詢(findOne)。我創建了一個獨特的索引。此外,根據最佳做法,我想強制所有電子郵件地址都是小寫字母。貓鼬是否支持聲明性的方式來執行消毒(比如壓縮)當執行sets /發現?

當然,我可以確保所有由email設置和/或查詢的控制器首先將屬性小寫,但這很容易出錯。有沒有辦法將聲明卸載到mongoose/mongo上呢? I.e .:將[email protected]傳遞給Mongoose將在設置值或查詢集合之前正確地消毒到[email protected]

回答

2

您可以使用預保存中間件。這是編碼,但它會確保任何電話保存您的文件將小寫電子郵件,無論它保存在哪裏

userSchema.pre('save', function(next) { 
    var user = this; 
    user.email = user.email.toLowerCase(); 
    next(); 
}); 
+1

是的。剛剛發現能夠在模式中執行'小寫:真正'和'修剪:真正',這更接近我想要的。但是,您的建議以及我的建議都不涉及查詢部分。 –

+0

非常感謝。它與我合作:) –