Как ответил @ CertainPerformance , это идеальный способ извлечения данных из mongoDB с использованием async / await, я хотел бы добавить еще немного информации о том, как обрабатывать ошибки в этом случае для корректности системы, и лучший обработчик ошибок, чтобы вернуть клиенту лучший статус о его запросе.
Я бы сказал, вы обычно хотите перехватить все исключения из асинхронного / ожидающего вызова.
try {
const employees = await Employees.find({
companyId
});
// You can add more logic here before return the data.
return {
employees
};
} catch (error) {
console.error(error);
}
Теперь давайте проверим способы обработки наших ошибок, которые могут возникнуть.
- Обрабатывать ошибку внутри области ошибки.
- Присвойте значение по умолчанию переменной в блоке catch.
- Проверьте экземпляр ошибки и действуйте соответствующим образом.
Это наиболее распространенный способ обработки ошибок в этих случаях и самый элегантный, на мой взгляд.
Обрабатывать ошибку внутри области ошибки:
export const getEmployees = async (companyId) => {
try {
const employees = await Employees.find({
companyId
});
// You can add more logic here before return the data.
return {
employees
};
} catch (error) {
console.error(error);
}
};
Присвойте значение по умолчанию переменной в блоке catch:
export const getEmployees = async (companyId) => {
let employees;
try {
employees = await Employees.find({
companyId
});
// You can add more logic here before return the data.
employees = employees;
} catch (error) {
console.error(error);
}
if (employees) { // We received the data successfully.
console.log(employees)
// Business logic goes here.
}
return employees;
};
Проверьте экземпляр ошибки и действуйте соответственно:
export const getEmployees = async (companyId) => {
try {
const employees = await Employees.find({
companyId
});
// You can add more logic here before return the data.
return {
employees
};
} catch (error) {
if (error instanceof ConnectionError) {
console.error(error);
} else {
throw error;
}
}
};
Еще несколько объяснений об асинхронном ожидании и более полезных методах, которые вы можете найти в этих ответах.
Как запустить async / await параллельно в Javascript