从另一个js脚本调用方法时如何处理node-mysql上的数据库延迟

问题描述

我正在使用课程和路由使用控制器(以mysql作为后端)的示例API,但是我的方法之一无法按预期工作,但是我不确定为什么...这是到目前为止的代码。

这是route / courses.js(当我转到localhost / courses时,应用程序将其称为):

var express = require("express");
var router = express.Router();

var coursesController = require("../controller/courses");

/* GET courses listing. */
router.get("/",function (req,res,next) {
  res.json(coursesController.getAllCourses()).status(200).end();
});

module.exports = router;

这是我的controller / courses.js

const mysqlPool = require("../db/database");

var Courses = {
  getAllCourses: () => {
    var sql = "select * from courses";
    var res = null;
    mysqlPool.getConnection((err,conn) => {
      if (err) throw err;
      try {
        conn.query(sql,(error,results) => {
          res = results;
          console.log(error);
          console.log(results);
          console.log("returning res = "+res)
          return res;
        });
      } catch (error) {
        throw error;
      }
    });
    console.log("not returned anything")
  },getSomeCourses: () => {},};

module.exports = Courses;

我不确定为什么这不能按预期进行。数据库连接工作正常,并且可以获取结果,但是当我尝试将它们放入json时,我只有一个空白屏幕。是我想念的东西吗?也许一些异步功能或类似的东西?

这些是console.log结果:

  mycourses:server Listening on port 3000 +0ms
not returned anything
GET /courses 200 14.548 ms - -
null
[
  RowDataPacket {
    idcourse: 1,name: 'Whatever 101',description: 'A course about nothing',thumbnail: null,price: 10.99
  },RowDataPacket {
    idcourse: 2,name: 'Anything 101',description: 'Course about idk',price: 9.99
  }
]
returning res = [object Object],[object Object]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)