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