MySQL соединение отдых службы

0

Попытка сделать простой сервис для отдыха. Служба отдыха предназначена для подтягивания таблицы из локальной базы данных. Эта служба отдыха хочет сделать доступной для приложения для Android.

Возникли проблемы с передачей. Then block. Пробовал поймать ошибку, но без успеха. Как вы поймаете ошибку, если она ошибочна в первом. Затем ниже фрагмент кода является 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 так же. Исключена эта проблема, но она продолжает возвращать ошибку, необработанную на первом. Then. До сих пор я не знаком с методами.

Кажется, я нашел проблему. новый sqlDb.Request(conn); .Request недоступен при использовании mysql. Но как я могу исправить это

Теги:
methods
rest

1 ответ

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. Вам действительно нужен callback(), почему бы не использовать Promise?

  • 0
    Я забрал обратный вызов и вставил обещание, но продолжаю получать исключение необработанным. Это на
  • 0
    Я думаю, что нашел проблему. новый sqlDb.Request (conn); The.Request недоступен при использовании mysql. Но как я могу это исправить
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню