【发布时间】:2015-04-10 12:40:53
【问题描述】:
我有一个简单的节点模块,它连接到数据库并且有几个函数来接收数据,例如这个函数:
dbConnection.js:
import mysql from 'mysql';
const connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'db'
});
export default {
getUsers(callback) {
connection.connect(() => {
connection.query('SELECT * FROM Users', (err, result) => {
if (!err){
callback(result);
}
});
});
}
};
模块将从不同的节点模块以这种方式调用:
app.js:
import dbCon from './dbConnection.js';
dbCon.getUsers(console.log);
我想使用 Promise 而不是回调来返回数据。
到目前为止,我已经阅读了以下线程中的嵌套承诺:Writing Clean Code With Nested Promises,但我找不到任何对这个用例来说足够简单的解决方案。
使用承诺返回 result 的正确方法是什么?
【问题讨论】:
-
如果您使用的是 kriskowal 的 Q 库,请参阅 Adapting Node。
-
@leo.249:你读过 Q 文档吗?您是否已经尝试将其应用于您的代码 - 如果是,请发布您的尝试(即使不工作)?你到底卡在哪里了?您似乎找到了一个不简单的解决方案,请发布。
-
@leo.249 Q 几乎没有维护——最后一次提交是 3 个月前。 Q 开发人员只对 v2 分支感兴趣,而且它甚至还没有接近生产就绪。从 10 月开始,问题跟踪器中有未解决的问题,但没有 cmets。我强烈建议你考虑一个维护良好的 Promise 库。
标签: javascript node.js promise