Как связать 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
199 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир