【发布时间】:2013-08-06 11:07:03
【问题描述】:
我想验证用户的电子邮件地址,但仅限于更改时。每次我保存到任何Entrant 时,以下代码似乎都会出现错误,因此在保存自身时会抛出一个错误,即电子邮件是重复的。
如何在创建参赛者时而不是每次进行编辑和保存时正确验证?
EntrantSchema.pre 'save', (next)->
user = this
# Email Validation
if (user.isModified('email'))
console.log "Email has been changed".green.inverse
# Unique Value
EntrantSchema.path("email").validate ((email,respond) ->
Entrant.findOne {email:email}, (err,user) ->
if user
respond(false)
respond(true)
), "Oopsies! That e-mail’s already been registered"
请注意,我认为 validate() 是第一次绑定,因为当我更新用户时,我没有收到“电子邮件已更改”,我是控制台。登录我的代码
【问题讨论】:
-
或许可以使用
this.isModifies('email')(see docs),但我建议您改用unique index。 -
我有isModified(),见上面的代码。出于其他原因,我需要使用自己的验证器
-
仅供其他读者参考:mongoosejs.com/docs/… 不应为此使用唯一索引
标签: node.js mongodb express mongoose