У меня есть схема вроде:
const CustomerSchema = new Schema({
email: { type: String, required: true, unique: true },
flags: {
marketingConsent: { type: Booleam, required: true },
},
});
Когда я делаю нового клиента:
const customer = new Customer({ email, marketingConsent });
1.) Можно ли получить доступ к данным, переданным в конструктор (email, marketingConsent) в хуке предварительного сохранения?
2.) Если нет, как правильно устанавливать вложенные объекты непосредственно из конструктора?
Если я это сделаю:
const customer = new Customer({
email,
["flags.canMarket"]: consentValue,
});
await customer.save();
Я получаю ошибку:
Customer validation failed: flags.canMarket: Path `flags.canMarket` is required.
Предварительное сохранение выглядит так:
CustomerSchema.pre("save", function(next) {
const self = this;
if (self.isNew) {
// Set passed in marketingConsent value.
}
next();
});