我如何使用蓝鸟承诺执行以下操作。我使用的模块是bluebird
,promise-mysql
我正在使用原生查询。
答案 0 :(得分:3)
一般的想法是:
insetA()
.then(function(a_id){
return Promise.all([inserB(a_id), inserC(a_id)])
})
.then(function(){
res.send("all good")
})
.catch(function(error){
res.send("some error")
})
function insetA(){
return new Promise(function (resolve, reject) {
// inserting A
// resolve(a_id)
})
}
答案 1 :(得分:0)
我刚刚查看并看到promise-mysql
库中的函数返回promises。你知道那是什么意思吗?您可以使用.then()
链接其中的每一个。
以下是一个例子:
var mysql = require('promise-mysql');
var connection;
mysql.createConnection({
host: 'localhost',
user: 'sauron',
password: 'theonetruering',
database: 'mordor'
}).then(function(conn){
connection = conn;
});
并在您的网络服务中:
return connection.query('insert into a values(. . . . .)')
.then(function(rows){
var a_id = rows.insertId;
return connection.query('insert into b values(. . . . .)')
.then(function(rows){
return connection.query('insert into c values(. . . . .)');
});
});
您实际上可以在第一个.then(function(rows){})
的末尾进行链接,但我只是想确保a_id不会存在于您插入表b和c的位置之外。