节点 mySQL 快递到 Json

Node mySQL Express to Json

我有一个带有 INNER JOIN 的 mySQL 查询,我想将其与 Handlebars 一起使用,尽管它是单个 return,但它仍然 returns 多个结果,因为图片 table 包含更多结果。

如何 return 一个结果,然后将图像放在单独的 json 字符串中?

这里是查询:

app.get("/car/:brand-:model-:id", function (req, res) {
    let userName;
    if (req.user != undefined) {
        userName = req.user.displayName;
    }
    const carSql = `SELECT * FROM cars INNER JOIN carimage ON cars.id = carimage.carId WHERE carimage.carId = ${req.params.id}`;
    const carQuery = db.query(carSql, (err, results) => {
        if (err) throw err;
        const data = {
            car: results,
            username: userName
        }
        //res.render("pages/car", data);
        res.send(data);
    });
});

然后return这个JSON:

{
  car: [
  {
    id: 274,
    userId: 10157597945502792,
    brand: "Ford",
    carId: 246,
    image: "carimages-1569568518629.jpg"
  },
  {
    id: 275,
    userId: 10157597945502792,
    brand: "Ford",
    carId: 246,
    image: "carimages-1569568518649.jpg"
  }
  ]
}

我想要的是将结果合并为一个结果,然后将图像嵌套 JSON。

这可能吗?

您可以使用 2 个查询来做到这一点:一个查询汽车,另一个查询它的图像。类似于:

app.get("/car/:brand-:model-:id", function (req, res) {
    let userName;
    if (req.user != undefined) {
        userName = req.user.displayName;
    }
    const carSql = `SELECT * FROM cars WHERE car.id = ${req.params.id}`;
    const carQuery = db.query(carSql, (err, car) => {
        if (err) throw err;

        const imagesSql = `SELECT * FROM carimage WHERE carimage.carId = ${req.params.id}`;
        const imageQuery = db.query(carSql, (err, results) => {
            if (err) throw err;
            const data = {
               car: car[0],
               images: results,
               username: userName
            }
          res.send(data);
        });
    });
});