#node.js #mongoose #mongoose-schema
#node.js #мангуст #мангуст-схема
Вопрос:
С приведенным ниже кодом:
const schema = new Schema({
_id: {
type: String
},
name: {
type: String,
required: true,
trim: true
}
}
schema.pre('validate', (next) => {
console.log(this.name);
this._id = crypto.createHash('md5').update(this.name).digest("hex");
next();
});
const myObject = new MyObject({ name: 'SomeName' });
myObject.save();
Приложение выдает это сообщение об ошибке:
MongooseError: document must have an _id before saving
Мой вопрос в том, как можно установить _id вручную для модели?
И почему this.name не определено
Ответ №1:
(next) => ...
является ли функция arrow, где this
является лексической и ссылается на охватывающую область, которая находится module.exports
в Node.js область действия модуля.
Для того, чтобы получить динамический this
внутри функции, это должна быть обычная функция:
schema.pre('validate', function (next) { ... })
Комментарии:
1. Спасибо за объяснение функции стрелки. Теперь все работает как по маслу!