gpt4 book ai didi

mysql - 选择 1 到多的更好方法?

转载 作者:行者123 更新时间:2023-11-30 00:09:18 25 4
gpt4 key购买 nike

我有一个基于express.js的休息应用程序。请查看以下代码并建议我更好的方法。

我想选择用户及其关联的图像(1 个用户有许多图像)。

function getUser (connection, req, res) {
var userId = req.params.id;
connection.query('SELECT * FROM user p'
+ ' WHERE p.id = ' + connection.escape(userId), function handleSql(err, rows) {
if (err){ logAndRespond(err,res); return; }
if (rows.length === 0){ res.send(204); return; }

var adId = rows[0].adId;
// load images
connection.query('SELECT id, url FROM image WHERE ad_id = ' + connection.escape(adId), function (err, imgRows) {
if (err){ logAndRespond(err,res); return; }
if (rows.length != 0){
rows[0].images = imgRows;
}

res.json({'user': rows});
connection.release();
});

});
}

最佳答案

  • 您不必自己转义参数
  • 如果发生错误,您不会释放连接

现在的问题是我不知道你想对选定的行做什么。您还检查了 rows.length 两次,但如果第一个查询中没有任何记录,则第二个查询将不会被执行。

    function getUser(conn, req, res) {
conn.query("SELECT * FROM user p WHERE p.id = ?;", [req.params.id], function(err, rows) {
if (err) {
return logAndRespond(err, res);
}

if (!rows.length) {
return res.send(204);
}

conn.query("SELECT id, url FROM image WHERE ad_id = ?;", [rows[0].adId], function(err, imgRows) {
if (err) {
return logAndRespond(err, res);
}

if (rows.length) { // ???
rows[0].images = imgRows;
}

res.json({"user": rows});
conn.release();
});
});
}

关于mysql - 选择 1 到多的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com