我正在调用一个API,该API返回如下用户列表:
const users = await axios.get('/api/users/all');
res.data现在是我的用户的数组,每个用户都有一个名为manager的字段,该字段是另一个模式中的manager的ID 我有另一个API,可在提供其ID后返回经理名称
axios.get('/api/managers/managerName', id)
我想运行一个forEach以将经理名称(而不是其ID)插入到我的结果中。 我正在尝试
const users= await axios.get('/api/users/all');
const final = users.data.forEach(function (element) {
element.managerName= axios.get('/api/managers/managerName', element.id);
});
但是,这当然不起作用,因为axios.get('/api/managers/managerName', element.id)
返回了一个承诺。
我怎样才能解决这个问题?谢谢
答案 0 :(得分:2)
据我所知,您不能在 var ss = SpreadsheetApp.openByUrl(mySheetURL);
var sheet = ss.getSheets()[0];
var cellRange = 'C2:C6'
var ques = sheet.getRange(cellRange).getValues();
var newForm = FormApp.openByUrl(myformURL);
var QOD = newForm.addMultipleChoiceItem();
QOD.setTitle(ques);
或await
内使用forEach
。它不起作用(不等待)。您必须使用map
循环。
for
答案 1 :(得分:1)
您可以解决第二个承诺:
const final = users.data.forEach(async function (element) {
element.managerName= await axios.get('/api/managers/managerName', element.id).then((manager) => manager.name);
});
答案 2 :(得分:1)
const users= await axios.get('/api/users/all');
const final = Promise.all(
users.data.map(async (element) => {
element.managerName = await axios.get('/api/managers/managerName', element.id);
}));