0

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

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

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

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

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

1 回答 1

0

我找到了一个解决方案:

当我做:

var user = new UserModel();

user.save()

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

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

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

于 2013-10-31T12:15:03.220 回答