Node js:fs WriteFile将数据两次写入文件

问题描述 投票:0回答:1

后端中的fs.writeFile代码运行两次。追加数据在控制台中出现两次,并且在JSON文件中两次写入数据。

知道为什么会这样吗?任何建议都将不胜感激。

编辑:这似乎是一个前端问题。 onFavSubmit运行两次...

前端

    constructor (props) {
        super (props) 
            this.state = {
                inputOne: '',
                chosenOne: ['Favourite Movie', 'X'],
                chosenTwo: ['2nd Favourite Movie', 'X'],
                chosenThree: ['3rd Favourite Movie', 'X'],
                movies:[],
            };
            this.onFavSubmit = this.onFavSubmit.bind(this);
            this.onReset = this.onReset.bind(this);
    }
    onFavSubmit = event => {
        const newFav = {
            first: this.state.chosenOne[0],
            second: this.state.chosenTwo[0],
            third: this.state.chosenThree[0]
        }

        if(this.state.chosenOne[1] === 'X' || this.state.chosenTwo[1] === 'X' || this.state.chosenThree[1] === 'X'){
            alert ('Need All 3 Favourite Shows')
            event.preventDefault();
        } else {
            axios.post('http://localhost:8001/fav', {newFav})
            .then(
                alert('Successfully Added'),
                this.onReset()
            )
            .catch(err => console.log(err.response))
        }
    }
<button className="fav__button" type="button" onClick={this.onFavSubmit}>Click Me</button>

后端

const express = require("express");
const favData = require("../data/fav.json")
const fs = require ('fs')
const router = express.Router();

router.get("/", (_, res) => {
    res.json(favData);
  });

router.post("/", (req, res) => {
    const newFirst = req.body.newFav.first;
    const newSecond = req.body.newFav.second;
    const newThird = req.body.newFav.third;

    const newfavData = {
        First: newFirst,
        Second: newSecond,
        Third: newThird,
    };

    fs.readFile('./data/fav.json', 'utf-8', function (err, data){
        var json = JSON.parse(data);
        json.push(newfavData);
        console.log(newfavData)
        fs.writeFile('./data/fav.json', JSON.stringify(json), function(err){
            if (err) throw err;
            console.log('data appended')
            return;
        })
    })

});

module.exports = router;
javascript node.js reactjs fs writefile
1个回答
0
投票

我没有足够的声誉,所以我无法发表评论。您是否尝试将this.onReset()注释掉,看看是否可以解决问题?

曾经有几次我在重新加载时向“ /”发送请求。

© www.soinside.com 2019 - 2024. All rights reserved.