javascript – promisified mysql模块如何与NodeJS一起使用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – promisified mysql模块如何与NodeJS一起使用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1738字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试在NodeJS中使用MySQL.我的整个应用程序都是用promises构建的,所以我也想宣传mysql模块.
所以我有这个:
Promise = require('bluebird');
var mysql = Promise.promisifyAll(require('mysql'));
现在,根据他们的API,connect()方法接受单个参数,在连接错误的情况下调用错误的回调.我的问题是,这如何转化为承诺?
承诺会在出错时解决吗?它会被拒绝吗?我可能需要.catch()吗?这是如何运作的?
解决方法:
如果一个方法是一个带有单个参数的节点“errback” – 它将在当时没有参数的情况下被解析,或者被传递给它的err被拒绝.在promisification的情况下,您可以使用.error捕获它或使用带Promise.OperationalError的catch.
这是一个简单的方法:
function getConnection(){
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret'
});
return connection.connectAsync().return(connection); // <- note the second return
}
getConnection().then(function(db){
return db.queryAsync(....);
}).error(function(){
// could not connect, or query error
});
如果这是用于管理连接 – 我使用Promise.using – 这是来自API的示例:
var mysql = require("mysql");
// uncomment if necessary
// var Promise = require("bluebird");
// Promise.promisifyAll(mysql);
// Promise.promisifyAll(require("mysql/lib/Connection").prototype);
// Promise.promisifyAll(require("mysql/lib/Pool").prototype);
var pool = mysql.createPool({
connectionLimit: 10,
host: 'example.org',
user: 'bob',
password: 'secret'
});
function getSqlConnection() {
return pool.getConnectionAsync().disposer(function(connection) {
try {
connection.release();
} catch(e) {};
});
}
module.exports = getSqlConnection;
哪个会让你这样做:
Promise.using(getSqlConnection(), function(conn){
// handle connection here, return a promise here, when that promise resolves
// the connection will be automatically returned to the pool.
});
内容总结
以上是互联网集市为您收集整理的javascript – promisified mysql模块如何与NodeJS一起使用?全部内容,希望文章能够帮你解决javascript – promisified mysql模块如何与NodeJS一起使用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。