使用fs.writeFile每第二次拒绝连接(节点v11,Express v4)

时间:2019-01-04 14:55:29

标签: node.js express asynchronous

我正在学习构建节点应用程序。我当前的应用程序应该将JSON格式的数据保存到文件中。信息保存后,我想重定向到主页。但是每隔第二次我使用fs.writeFile都会在chrome上收到一条消息,提示连接被拒绝。我在做什么错了?

模型:

static addItemToCart(item_Id,item_price){
        return new Promise((resolve,reject)=>{
            getCartFileContent()
            .then(cart=>{

                const currentProducts = cart.cartProducts.map(item=>item.itemId);
                const cartContent = {...cart};

                if(!currentProducts.includes(item_Id)){

                    cartContent.cartProducts.push({
                        itemId: item_Id,
                        qty: 1
                    });

                    cartContent.totalPrice += parseFloat(item_price);
                    cartContent.totalPrice = +cartContent.totalPrice.toFixed(2);



                }else{

                    const indexToAddAt = cartContent.cartProducts.findIndex(item => item.itemId === item_Id);
                    cartContent.cartProducts[indexToAddAt].qty++;
                    cartContent.totalPrice += parseFloat(item_price);
                    cartContent.totalPrice = +cartContent.totalPrice.toFixed(2);

                };
                fs.writeFile(p,JSON.stringify(cartContent),(err)=>{
                    if(err){
                        return reject(err);
                    }else{
                        return resolve('product successfully added to cart');
                    };
                });
            });
        });
    };

控制器:

exports.postAddToCart = (req,res,next) => {
    const itemToAdd = req.body.productId;
    const itemPrice = req.body.productPrice;

    Cart.addItemToCart(itemToAdd,itemPrice)
    .then(msg=>{
        console.log(msg);
        res.redirect('/home');
    })
    .catch(err=>{
        console.log(err);
    });
};

该函数确实正确地写入文件,但是每当我第二次调用该控制器时,连接被拒绝,为什么?

谢谢。

0 个答案:

没有答案