Mongoose: Как установить _id вручную перед сохранением? - PullRequest
1 голос
/ 04 апреля 2019

При наличии следующего кода:

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 для модели?

И почему это имя не определено

1 Ответ

2 голосов
/ 04 апреля 2019

(next) => ... является функцией стрелки, где this является лексическим и относится к включающей области видимости, которая module.exports в области видимости модуля Node.js.

Для получения динамического this внутри функции, это должна быть обычная функция:

schema.pre('validate', function (next) { ... })
...