javascript - koa中查询mysql数据,ctx.body 写在query回调中无法返回数据到前台,报404
高洛峰
高洛峰 2017-04-11 11:58:11
0
2
298

在koa中,用了MySQL 数据库,前台用 ajax POST 请求数据库数据时,若将 ctx.body表达式写在 query 表达式中用以返回查询的数据给前台,会报 404 错误。下图写法

若将 ctx.body 写在query 查询方法外,则正常,但是无法获取到数据库查询的数据。 这是怎么回事啊?? 该怎么解决,既不报404又能将查询到的数据返回给前台ajax。下图写法

代码:
router.post('/query', async function(ctx, next) {

ctx.body = 'ok';
await connection.query('SELECT * FROM `notes` WHERE `title` = ?', ['434'],
    function(err, rows, fields) {
    if (!err) {
        console.log(rows);
    }
});

});

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
左手右手慢动作
router.post('/query', async (ctx, next) => {
  let data;
  try {
    data = await connection.query('SELECT * FROM `notes` WHERE `title` = ?', ['434']);
  } catch (err) {
    ctx.body = { message: err.message };
    ctx.status = err.status || 500;
  }
  ctx.body = 'ok';
});

connection.query需要用promise封装下
如何封装可以参考这篇文:Node.js用ES6原生Promise对异步函数进行封装

Peter_Zhu

不要写在里面,像楼上一样,先let data,然后在function里面把结果赋给data,再在外面ctx.body

我也困扰了很久,express是你这种写法可以

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!