Node/Express框架下MySQL查询后获取数据的方法咨询
获取MySQL查询返回数据的解决方案
嘿,我来帮你搞定这个问题!你其实已经离答案很近了——查询返回的数据就存在你回调函数里的rows变量里,只是还没真正去使用它而已😉
核心问题说明
你的代码里,connection.query的回调函数已经接收到了查询结果rows,它是一个数组,数组里的每个元素对应数据库event表中的一行数据。你只需要在else块里对这个rows做处理就行。
修改后的示例代码
我帮你完善了代码,补上了遗漏的错误处理和数据使用的实际场景:
exports.view = function(req, res) { var name = req.params.name; // 先处理获取数据库连接的错误(之前的代码漏掉了这个环节) req.getConnection(function(err, connection) { if (err) { console.log("获取数据库连接失败: %s ", err); return res.redirect('/'); } var query = connection.query( 'SELECT * FROM event WHERE linkname = ?', [name], function(err, rows) { if (err) { console.log("查询数据出错: %s ", err); return res.redirect('/'); } else { // 这里就能直接访问查询到的数据了! console.log("查询到的记录:", rows); // 场景1:把数据传给模板渲染页面(比如用EJS、Pug等模板引擎) res.render('event-detail', { eventData: rows }); // 场景2:如果是API接口,直接返回JSON格式的数据 // res.json({ success: true, data: rows }); // 如果确定只会返回一条数据,可以直接取数组第一个元素 // const singleEvent = rows[0]; // console.log("单条记录:", singleEvent); } } ); }); };
关键知识点
rows是查询结果的数组:哪怕你的查询只匹配到一条记录,它也是长度为1的数组,需要用rows[0]来获取单条数据- 不要漏掉
getConnection的错误处理:获取数据库连接也可能失败,这个环节的错误必须捕获,避免程序崩溃 - 根据业务场景选择数据处理方式:是渲染页面就传给模板,是接口就返回JSON,按需使用即可
内容的提问来源于stack exchange,提问作者mixx
相关产品推荐
相关产品推荐

