Có 2 thứ, khi được sử dụng kết hợp, sẽ làm cho mã đẹp hơn nhiều:
-
Collection.find
trả về một Lời hứa . - Để đợi Lời hứa được giải quyết trong Javascript hiện đại, hãy sử dụng
await
Bạn có thể sử dụng mã sau:
const Person= require('./models/person')
const Mortician = require('./models/mortician')
router.get('/', async (req, res, next) => {
try {
const persons = await Person.find({ pickedUp: false });
const morticians = await Mortician.find({});
res.render('pages/dashboard', {
title: 'Dashboard',
persons,
morticians,
});
} catch(e) {
// handle errors
}
});
Hoặc, để truy xuất kết quả song song thay vì nối tiếp, hãy sử dụng Promise.all
:
router.get('/', async (req, res, next) => {
try {
const [persons, morticians] = await Promise.all([
Person.find({ pickedUp: false }),
Mortician.find({})
]);
res.render('pages/dashboard', {
title: 'Dashboard',
persons,
morticians,
});
} catch(e) {
// handle errors
}
});
Bạn có thể sử dụng cùng một loại mẫu bất cứ khi nào bạn có nhiều lệnh gọi không đồng bộ - không cần lồng và thụt lề dấu ngoặc đơn xấu xí.