Несколько запросов в одном окончательном пользовательском JSON - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать маршрут 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, вместо этогоэтого пути?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...