Я пытаюсь создать маршрут API, используя Node и Express, и должен сказать, что у меня нет особого опыта работы с ним.Правильно знаю, у меня есть следующий код:
app.get('/api/place/:id', (req, res) => {
var id = req.params.id;
var message_error = '{"status": "failed", "message": "Unable to fetch data"}';
db.query("SELECT `id`, `user`, `lat`, `lon`, `elevation`, `rating`, `rating_count`, `country`, `continent`, `locality` FROM `t_points` WHERE id = ?", [id], (err, res1) => {
if(err) {
res.json(message_error);
} else {
//Store the user id from the points table and use it to fetch user datas
var userId = res1[0].user;
if(userId != null) {
db.query("SELECT `id`, `name` FROM `t_users` WHERE `id` = ?", [userId], (err, res2) => {
if(err) {
res.json(message_error);
} else {
//Final json structure
res.json({
id: res1[0].id,
lat: res1[0].lat,
lon: res1[0].lon,
elevation: res1[0].elevation,
rating: res1[0].rating,
rating_count: res1[0].rating_count,
user: {
id: res2[0].id,
name: res2[0].name
}
});
}
});
} else {
res.json({
id: res1[0].id,
lat: res1[0].lat,
lon: res1[0].lon,
elevation: res1[0].elevation,
rating: res1[0].rating,
rating_count: res1[0].rating_count
});
}
}
});
});
Я жестко программирую структуру json, поэтому, если userId в моей таблице равен null, я не печатаю пользовательский объект в json, в противном случае я печатаюЭто.Но это не очень хорошая идея, так как я также добавлю больше запросов по тому же маршруту.Есть ли простой способ создать только один json в конце всех запросов, и если некоторые значения равны null, не показывая его?
Кроме того, было бы лучше использовать вместо этого функции async и await, вместо этогоэтого пути?
Спасибо!