Node.js Mongoose/NodeJS-有没有跳过中间件的方法?
我正在使用我的Node.js Mongoose/NodeJS-有没有跳过中间件的方法?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在使用我的save方法save和update。对于我的注册页面,我有一个方法pre(“save”),用于检查用户是否已经存在 因此,我无法再使用“保存”进行更新 我目前的方法是检查对象的某些属性是否已更改(无法在注册页面中设置的属性),如果已更改,我可以“欺骗”跳过pre(“save”)方法。但这离清洁还差得远。例如,如果我想更改用户名(可以从注册页面访问),我就不能这样做 我提出了这个方法,而不是在pre(“save”)方法中进行过滤: user.save(function(error){
save
方法save和update。对于我的注册页面,我有一个方法pre(“save”)
,用于检查用户是否已经存在
因此,我无法再使用“保存”进行更新
我目前的方法是检查对象的某些属性是否已更改(无法在注册页面中设置的属性),如果已更改,我可以“欺骗”跳过pre(“save”)
方法。但这离清洁还差得远。例如,如果我想更改用户名(可以从注册页面访问),我就不能这样做
我提出了这个方法,而不是在pre(“save”)
方法中进行过滤:
user.save(function(error){
if( error.name != "UserAlreadyExistError")
我找到了一个解决方案:
当我这样做时:
var user = new UserModel();
user.save()
Mongoose将检查是否有具有给定\u id
的用户,如果有,将抛出重复的密钥错误
但是,当在findOne()
方法中检索用户并保存后,它不会抛出任何重复密钥错误,就好像mongoose知道这是一个有意的更新一样
还要注意的是,字段
\u id
必须是准确的这样调用。一些代码示例肯定会帮助回答的用户和您自己:)