async function addContact(name, email, phone) {
try {
const data = await fsPromises.readFile(contactsPath, encoding);
const updatedData = data.push({
id: uid,
name: name,
email: email,
phone: phone,
});
await fsPromises.writeFile(contactsPath, JSON.stringify(updatedData));
console.log(updatedData);
} catch (err) {
console.error(err);
}
}
获取TypeError:data.push不是函数 在Object.addContact(/Users/jewkuza/Documents/goit-node-hw-01/contacts.js:43:30)
答案 0 :(得分:1)
data
是一个字符串,而不是数组,因此没有可用的方法push
。
您可能缺少JSON.parse()
:
const data = await fsPromises.readFile(contactsPath, encoding);
const parsedData = JSON.parse(data)
const updatedData = parsedData.push({
id: uid,
name: name,
email: email,
phone: phone,
});
答案 1 :(得分:1)
尽管事实是您的代码只是缺少fsPromises定义的一小段,但这里有两个错误。
readFile返回一个字符串而不是一个数组(请参见此处:https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback)
您将变量updatedData
写回到文件中。 Array.push返回数组的新长度,而不是更新后的数组。您可能想写回数据。