0
我怎樣才能做到以下藍鳥承諾。模塊我使用的是bluebird
,表B中 我如何處理與承諾而不是回調的嵌套查詢?
promise-mysql
- 插入表A和回報A_ID現在向用戶發送所有記錄都添加的響應。
我正在使用原生查詢。
我怎樣才能做到以下藍鳥承諾。模塊我使用的是bluebird
,表B中 我如何處理與承諾而不是回調的嵌套查詢?
promise-mysql
我正在使用原生查詢。
的總體思路是:
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)
})
}
我剛查過,看到函數在promise-mysql
庫返回承諾。你知道那是什麼意思嗎?你可以用.then()
鏈接每一個鏈接。
下面是一個例子:
var mysql = require('promise-mysql');
var connection;
mysql.createConnection({
host: 'localhost',
user: 'sauron',
password: 'theonetruering',
database: 'mordor'
}).then(function(conn){
connection = conn;
});
,並在您的Web服務:
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的地方。