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'
});