Как связать mongodb и класс в Node.js? У меня есть такая модель 'User': User=new Schema({
'login':string,
'firstName':string,
'lastName':string
})
Ранее, когда я хотел получить, к примеру, имя пользователя, я писал что-то навроде:User.findOne({'login':'peterjacobs123'}, function(err, user){
//...error handle...
console.log(user.firstName);
})
Но внезапно захотелось перевести все в ООП-рельсы. А как это сделать пока что не очень понятно. На выходе я хочу получить класс User такого вида:var user = new User('peterjacobs123');
console.log(user.firstName);
Сразу же возникает проблема с асинхронностью Mongodb, и как её обойти не ясно. Единственное, что приходит в голову-использовать promises, но в каком именно месте их возвращать?

21 Авг 2019 в 07:08
169 +1
0
Ответы
1

Для связывания MongoDB с классом в Node.js и обхода проблемы асинхронности можно использовать промисы. В вашем случае, можно переписать класс User с использованием промисов следующим образом:

class User {
constructor(login) {
this.login = login;
}
async getFirstName() {
return new Promise((resolve, reject) => {
User.findOne({ login: this.login }, (err, user) => {
if (err) {
reject(err);
} else {
resolve(user.firstName);
}
});
});
}
}
// Использование класса User
const user = new User('peterjacobs123');
user.getFirstName()
.then(firstName => {
console.log(firstName);
})
.catch(err => {
console.error(err);
});

Таким образом, при создании экземпляра класса User с передачей логина, можно вызвать метод getFirstName(), который возвращает промис с именем пользователя. При обработке промиса с помощью методов then и catch, можно получить имя пользователя или обработать ошибку соответственно.

Надеюсь, это поможет вам связать MongoDB с классом в Node.js и обойти проблему асинхронности.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 503 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир