0
我在試圖用本機JS「循環」到多個「嵌套」承諾時出現問題。當「循環」它們時,不能在原生承諾之間傳遞數據
我有很多能級一個JSON如下所示:
{
"project": {
"name": "TESTNAME",
"label":"string11405",
"description":"das",
},
"form": [{
"label": "string",
"name": "string",
"fields": [{
"label": "string",
"name": "string",
"field_type_id": "string",
"meta": [{
"meta_name": "string",
"meta_value": "string"
}]
}]
}
所以我檢查,我需要使用Promise.all
。
return Promise.all(_.map(req.crfData ,(value,index,arr) => {
var table = 'TABLE1';
return conn.query(`INSERT INTO ${table} SET ?`,[value]);
}))
.then((result) => {
var table = 'TABLE2';
return Promise.all(_.map(req.fieldData ,(value,index,arr) => {
value.crf_id = result.insertId;
return conn.query(`INSERT INTO ${table} SET ?`,[value]);
}));
})
.then((result) => {
var table = 'TABLE3';
return Promise.all(_.map(req.fieldData ,(value,index,arr) => {
return conn.query(`INSERT INTO ${table} SET ?`,[value[0]],(err) => next(err));
}));
})
.catch((err) => next(err));
這個問題是與第二個查詢(表2),我無法從以前的承諾檢索MySQL的新ID,因爲result
包含一個承諾,而不是此時,相應的數據應該返回。
感謝您的幫助。
我期望'result'包含來自第一個查詢的數據。那個結果var的'conole.log'是什麼? – steampowered
'result'包含一個包含單個promise的結果的數組(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all#Using_Promise.all) – mhu