При регистрации нового пользователя с помощью Mongoose & MongoDB я хотел бы получить значения из другой коллекции перед сохранением экземпляра пользователя. В настоящее время я использую следующее решение, но это приводит к тому, что пользователь дважды получает спасение ... Еще хуже, если пользователь не передает первую проверку, то в любом случае вызов метода save()
вызван ... обычно приводит к неперехваченному исключению.Метод асинхронного набора в mongoose
Мой текущий код работает следующим образом:
UserSchema.path('address.postCode').set(function(newVal, cb) {
var that = this;
this.model('PostCode').findOne({ postCode: newVal }, function(err, postCode) {
if(postCode) {
that.longitude = postCode.longitude;
that.latitude = postCode.latitude;
} else {
that.longitude = undefined;
that.latitude = undefined;
}
that.save();
});
return newVal;
});
Кто-нибудь знает лучший способ сделать это?
Есть ли все-таки сделать это на обновлениях, но ТОЛЬКО, когда пользователь меняет postCode? – lohfu
Да, я обновил ответ с этим изменением. – victorkohl