mysql连接休息服务

时间:2018-03-08 11:34:12

标签: mysql node.js rest api methods

尝试制作简单的休息服务。其余服务用于从本地数据库中提取表。这个休息服务想要为Android应用程序提供。

无法通过。然后阻止。尝试捕捉错误但没有成功。如果在第一个错误中出错,你如何捕获错误。然后 下面的代码是db.js,并设置与数据库的连接。

var sqlDb = require("mysql");
var settings = require("../settings");

exports.executeSql = function (sql, callback) {

var conn = new sqlDb.createConnection(settings.dbConfig);
conn.connect()
// !! Error unhandled
.then(function () {
        var req = new sqlDb.Request(conn);
        req.query(sql)
            .then(function (recordset) {
                callback(recordset);
            })
            .catch(function (err) {
                console.log(err);
                callback(null, err);
            });
    })
    .catch(function (err) {
        console.log(err);
        callback(null, err);
    });
};

设置连接后,执行下面的代码。有错误处理。

var db = require("../core/db");

exports.getList = function (req, resp) {
    db.executeSql("SELECT * FROM employees", function (data, err) {
        if (err) {
            // throws back error to web
            resp.writeHead(500, "Internal Error", { "Content-Type": 
            "application/json" });
            resp.write(JSON.stringify({ data: "ERROR occurred:" + err }));
        } else {
            resp.writeHead(200, { "Content-Type": "application/json" });
            resp.write(JSON.stringify(data));
        }
        resp.end();
    });
};

为数据库等设置创建了一个单独的js文件。以同样的方式测试了我与db的连接。排除了这个问题,但它继续返回第一个未处理的错误。然后。到目前为止,我对方法并不熟悉。

我想我发现了这个问题。 new sqlDb.Request(conn);使用mysql时,.Request不可用。但是我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

如果你发现错误()错误,如果没有返回新的拒绝,它将不再被捕获。像这样:

conn.connect()
.then(function () {
        var req = new sqlDb.Request(conn);
        // note the "return" here
        return req.query(sql)
            .then(function (recordset) {
                callback(recordset);
            })
            .catch(function (err) {
                console.log(err);
                callback(null, err);
                // note the line below
                return Promise.reject(err)
            });
    })
    .catch(function (err) {
        console.log(err);
        callback(null, err);
    });
};

PS。你真的需要回调(),为什么不使用Promise?