let crypto = require('crypto');
let mongoose = require('../mongoose'),
Schema = mongoose.Schema;
Тогда Схема
let schema = new Schema({
name: {
type: String,
default: ''
},
hashedPassword: {
type: String,
required: true
},
salt: {
type: String,
required: true
}
});
Тогда методы и виртуалы
schema.methods.encryptPassword = function(password){
return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
};
schema.virtual('password').set(function(password){
this._plainPassword = password;
this.salt = Math.random() + '';
this.hashedPassword = this.encryptPassword(password);
}).get(function(){ return this._plainPassword; });
Вы можете проверить пароль таким образом
schema.methods.checkPassword = function(password){
return this.encryptPassword(password) === this.hashedPassword;
};
Модуль экспорта
module.exports.Artist = mongoose.model('Artist', schema);
Тогда просто сохраните как раньше
const { email, password, id } = req.body;
Artist.findOneAndUpdate({ _id: id }, { $set: req.body }).then((artist) => {
return res.json({
success: true,
message: "Invitation sent."
});
});
Но я советую вам также использовать статику. Например:
schema.statics.updateUser = function (data){
// your code
}
И тогда вы можете использовать
Artist.updateUser(req.body).then((res) => {
// response
})