Ced*_*Ced 4 mysql node.js bluebird
前段时间我决定从PHP切换到节点.在我的第一个项目中,我不想使用任何ORM,因为我认为我不需要复杂化我的生活那么多学习另一件事(目前我正在学习节点和角度)因此我决定使用mysql包而不用还要别的吗.重要的是要说我有一些复杂的查询,我不想从sctratch学习如何使用9000 ORM节点之一使它们工作,这是我到目前为止所做的:
thing.service.js
Thing.list = function (done) {
db.query("SELECT * FROM thing...",function (err,data) {
if (err) {
done(err)
} else {
done(null,data);
}
});
};
module.exports = Thing;
Run Code Online (Sandbox Code Playgroud)
thing.controler.js
Thing = require('thing.service.js');
Thing.list(function (err,data) {
if (err) {
res.status(500).send('Error D:');
} else {
res.json(data);
}
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用蓝鸟来宣传这种功能呢?我已经尝试了......但我在这里寻求帮助.这是我试过的
var Thing = Promise.promisifyAll(require('./models/thing.service.js'));
Thing.list().then(function(){})
Run Code Online (Sandbox Code Playgroud)
小智 13
我这样做了,它工作正常.
const connection = mysql.createConnection({.....});
global.db = Bluebird.promisifyAll(connection);
db.queryAsync("SELECT * FROM users").then(function(rows){
console.log(rows);});
Run Code Online (Sandbox Code Playgroud)
我从来没有好运过promisifyAll和IMO我更喜欢手动处理我的内部检查.以下是我将如何处理此问题的示例:
//ThingModule
var Promises = require('bluebird');
Things.list = function(params) {
return new Promises(function(resolve, reject) {
db.query('SELECT * FROM thing...', function(err, data) {
return (err ? reject(err) : resolve(data));
});
});
}
//usage
var thinger = require('ThingModule');
thinger.list().then(function(data) {
//do something with data
})
.error(function(err) {
console.error(err);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7311 次 |
| 最近记录: |