【发布时间】:2021-11-17 14:45:51
【问题描述】:
我确定这是我的理解/实施的问题。问题是我试图将创建的对象的 ID 返回到一个数组中,以便以后可以将数组插入到另一个对象中。在函数、调用之间移动 .then() 似乎没有任何效果。推送到数组,通过索引将值分配给数组似乎不起作用。任何有关根本问题是什么以及解决问题的途径的见解/指导都将受到赞赏。
index.js
const contacts = document.getElementsByName('newContact');
const contactName = document.getElementsByName('contactName');
const contactTitle = document.getElementsByName('contactTitle');
const contactPhone = document.getElementsByName('contactPhone');
const contactEmail = document.getElementsByName('contactEmail');
let contactIDArray = new Array();
for (let i = 0; i < contacts.length; i++) {
const name = contactName[i].value;
const title = contactTitle[i].value;
const phone = contactPhone[i].value;
const email = contactEmail[i].value;
var id;
createContact(name, title, phone, email).then(function (res) {
id = res.data.id;
alert(res.data.id);
return id;
});
alert(id);
contact.js
import axios from 'axios';
export const createContact = async (contactName, contactTitle, contactPhone, contactEmail) => {
try {
const res = await axios({
method: 'POST',
url: '/api/v1/contacts',
data: {
contactName,
contactTitle,
contactPhone,
contactEmail,
},
});
return res.data.id;
} catch (err) {
console.log(err);
}
};
【问题讨论】:
-
createContact返回res.data.id,然后您尝试再次从中获取.data.id。 -
我不确定你想用循环实现什么:id 将在每个回调调用中重新分配。此外,您的回调正在返回 id,但之后您没有使用它
-
@jkoestinger 该循环将负责在后端创建一个或多个联系人文档。联系人属于另一个称为标签的结构。该数组用于将每个联系人字段的 ID 附加到标签。我可以将联系人存储在标签本身中,但这会破坏我们存储的联系人共享功能。
-
@KrzysztofKrzeszewski 我正在调查,谢谢!
标签: javascript async-await axios