【发布时间】:2021-12-12 17:13:07
【问题描述】:
我有现有的 products.json 数据,它由一组数据组成,我想在发布请求上推送一个新的 json 对象。虽然 json 对象数组得到更新,但是当我打开 product.json 文件时,我看不到该文件中新添加的数据。我收到这样的错误
[Error: ENOENT: no such file or directory, open '../data/products.json'] {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '../data/products.json'
}
文件夹结构
controllers
productController.js
models
productModels.js
data
products.js
node_modules
package.json
package-lock.json
server.js
产品控制器文件
export const createProduct = async (req, res) => {
try{
const product = {
userId: 'req.userId',
id: 'req.id',
title: 'req.title',
body: 'req.body'
}
const newProduct = await create(product)
res.writeHead(201, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(newProduct))
}catch(err){
console.log(err)
}
}
产品模型文件
export const create = (product) => {
const id = uuid()
const newProduct = {...product, id}
products.push(newProduct)
writeDataToFile('../data/products.json', products)
const promise = new Promise((resolve, reject) => {
const newProduct = products.find(element => element.id = id)
setTimeout(() => {
resolve(newProduct)
}, 1000)
})
return promise
}
utils.js 文件
import { writeFile } from 'fs/promises';
export const writeDataToFile = async (filename, content) => {
try {
console.log(filename)
console.log(process.cwd())
await writeFile(filename, JSON.stringify(content));
} catch (err) {
console.error(err);
}
}
【问题讨论】:
-
`虽然json对象数组得到更新但是当我打开product.json文件`,这是什么意思?你是先从文件中读取数据吗?
-
你检查过这个吗? stackoverflow.com/questions/43260643/… 如果它对您不起作用,那么我们会为您的问题找到下一个解决方案。
-
@DarshanRaval SO 根据问题中提供的场景提出不同的问题。
-
@ApoorvaChikara 对不起。
-
@DarshanRaval 别抱歉,没关系。