在nodejs中寫一個json文件

尼尚·庫馬爾

在此處輸入圖片說明我有由一組數據組成的現有 products.json 數據,我想在 post 請求上推送一個新的 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);
      }
}

在此處輸入圖片說明

在此處輸入圖片說明

阿普爾瓦·奇卡拉

似乎路徑不正確,這就是它不更新文件的原因。


import { writeFile } from 'fs/promises';
import * as path from 'path';

import { fileURLToPath } from 'url';
import { dirname } from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

export const writeDataToFile = async (filename, content) => {
    try {
        console.log(filename)
        console.log(process.cwd());
        console.log(path.join(__dirname, filename)) // check if the path is correct
        await writeFile(path.join(__dirname, filename), JSON.stringify(content));      
     return 'File Updated';
      } catch (err) {
        console.error(err);
      }
}

您可能需要等待文件操作執行:


export const create = (product) => {
    const id = uuid()
    const newProduct = {...product, id}
    products.push(newProduct)

    await 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
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在NodeJs中读取JSON文件

遍历NodeJS中的JSON文件

nodeJS中的Json文件创建

如何在三個不同列的csv文件中寫入緯度、經度和另一個變量的值?

在 nodejs 中解析 JSON 文件

如何編寫一個同時使用 XML 和 JSON 的 servlet 程序?

編寫一個Java程序,將句子中每個單詞的首字母大寫

如何編寫一個從庫中調用函數的函數?

編寫一個函數以在 R 中按 1:n 序列迭代單行

XLXS 是寫在內存中的工作表還是一個獨立的 I/O 進程

在golang中將一個bytes.Buffer的內容寫入(或複制)到另一個

為什麼得到這個 `Result` 可能是一個 `Err` 變體,在 Rust 中寫入文件時應該處理警告

如何在 Go 中同時寫入兩個不同的 csv 文件?

從一個文件夾中的多個文件加載 json 並將它們放入一個字典(或列表)中

Java/Unix:如果另一個進程試圖在中間讀取它,一個進程能否成功寫入文件

JSON 寫入崩潰中的另一個無效頂級類型

有沒有辦法編寫一個匹配所有文件的 glob 模式,除了文件夾中的文件?

你如何編寫一個循環來合併列表中每 N 個元素的 2 個元素?

將不在一行中的多個單元格的值寫入數組

如何在顫振中將 TextFormField 的第一個字母大寫

大寫一個javascript函數

將多個 JSON 文件轉換為 CSV 文件,每個文件在一列中

編寫一個函數從 str_split() 中獲取後面的元素

從 txt 文件中逐個字符讀取,然後用 C 寫入另一個文件?

如何將包含鍵的列表和另一個列表作為值寫入 Python 中每列的 CSV 文件

如何編寫一個不從列表中打印出大寫單詞的函數?

在 VimScript 中寫下:“如果 Lexplore 打開了一個文件(任何文件),則關閉 Lexplore”

NodeJS FileSystem Json 讀寫只有一個有效

如何在css文件中的同一個類中為react js編寫懸停