Node.js 有条件跳过mongoose钩子函数
我有一个预保存钩子来加密Node.js 有条件跳过mongoose钩子函数,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我有一个预保存钩子来加密用户模式的密码字段,如: var schema = new mongoose.Schema({ username: 'string', password: 'string' }); schema.pre('save', encrptPasswordHook); schema.pre('update', encrptPasswordHook); schema.pre('findOneAndUpdate', encrptPasswordHook); ...
用户
模式的密码
字段,如:
var schema = new mongoose.Schema({
username: 'string',
password: 'string'
});
schema.pre('save', encrptPasswordHook);
schema.pre('update', encrptPasswordHook);
schema.pre('findOneAndUpdate', encrptPasswordHook);
...
这样,每次创建或更新用户时,我都会在数据库中加密密码字符串
现在我有了一个JSON文件,其中包含带有加密密码的旧User
数据。我想使用这个User
模型将JSON文件导入到我的数据库中
如何避免预保存钩子再次加密密码?您可以使用User.collection.insert()
绕过所有Mongoose验证(插入数据的类型不会被检查)和钩子,它直接使用MongoDB驱动程序:
var UserSchema = new mongoose.Schema({
username: 'string',
password: 'string'
});
var User = mongoose.model('User', UserSchema);
User.collection.insert({
username: 'Some Name',
password: 'The Encrypted Password'
});