我正在尝试使用Nodejs和Mysql创建REST服务。 他是我的代码:
composer dump-autoload
};
但我有错误
var sqlDb = require("mysql");
var settings = require("../settings");
exports.executeSql = function (sql, callback) {
var conn = sqlDb.createConnection(settings.dbConfig);
conn.connect()
.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);
});
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
正确的功能是createConnection
。请阅读文档:
答案 1 :(得分:0)
在文档中,如果您查看documentation可以用作回调方法,则 connect
方法不会返回承诺:
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret'
});
//** Look here...
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
作为一个很好的选择,您可以使用正在使用bluebird的软件包 promise-mysql
,并且可以找到here(强烈建议使用)或包装像使用bluebird这样的承诺:
async function connect(connection) {
return new Promise((resolve, reject) => {
connection.connect((err) => {
return err ? reject(err) : resolve(connection);
})
});
}