Mongoose / NodeJS - 有没有办法跳过中间件?

时间:2013-10-31 10:04:47

标签: node.js mongodb mongoose

我正在使用save方法保存更新。对于我的注册页面,我有一个方法pre("save"),用于检查用户是否已经存在。

因此我不能再使用save来更新了。

我目前的方法是检查对象的某些属性是否已更改(无法在注册页面中设置的属性),如果是,我可以“欺骗”跳过pre("save")方法。但这绝不是干净的。如果我想更改用户名(例如可以从注册页面访问),我就无法做到。

我想出了这个,而不是在pre("save")方法中进行过滤:

user.save(function(error){
    if( error.name != "UserAlreadyExistError")

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

当我这样做时:

var user = new UserModel();

user.save()

Mongoose将检查是否存在具有给定_id的用户,如果是,则会抛出重复的密钥错误。

但是,当用findOne()方法检索用户并保存然后时,它不会抛出任何重复键错误,就好像mongoose知道它是有意更新一样。

另请注意,字段_id必须完全这样调用。