返回Nodejs中循环的Stop

yb3bgrhw  于 2022-11-03  发布在  Node.js
关注(0)|答案(2)|浏览(142)

这是代码,当我运行这个它只执行一次...

export const postStock = (body) => {
    for (let val of body.order.values()) {
        let sql = ` INSERT INTO stockmaster (stocknum, cat_id, user_id, dyenumber, stockQty) VALUES ('${body.stocknum}', ${JSON.stringify(val.cat_id)}, '${body.user_id}', ${JSON.stringify(val.dyenumber)}, ${JSON.stringify(val.stockQty)})`;
        return sql;
    };
};

那么我如何运行for循环或防止它停止它呢?
这就是函数的工作原理,当循环开始时,它会多次发送响应,所以我尝试将其设置为循环外,但现在如果我将响应设置为循环外,那么我如何在响应中发送错误
所以我被困在这里了!!!!

static stock = async (req, res) => {
        for (let i = 0; i < req.body.order.length; i++) {
            const body = req.body;      
            connection.query(postStock(body, body.order[i]), (err, result) => {
                if (err) {
                    res.status(500).json({
                        code: 0,
                        msg: "Fail",
                        emsg: "Server error: " + err.message
                    });
                } else {
                    connection.query(updatepStock(body.order[i]), async (err, result) => {
                        if (err) {
                            res.status(500).json({
                                code: 0,
                                msg: "Fail",
                                emsg: "Server error: " + err.message
                            });
                        }
                    })
                }
            })
        }
        res.status(201).json({code: 1,msg: "success",emsg: "Stock arrived & Product Stock updated successfully"
        })
    }
ujv3wf0j

ujv3wf0j1#

return停止执行并退出函数。return总是立即退出它的函数,如果它在for循环中,则不会进一步执行。
因此,如果希望循环继续,应该避免使用return。您可以做的是将sql存储到数组中或打印数据,而不返回任何内容

4nkexdtk

4nkexdtk2#

你可以使用这个。return使循环函数存在。

export const postStock = (body) => {
    let values =  body.order.values();
    let sql = values.map((val) => `("${body.stocknum}", 
     "${JSON.stringify(val.cat_id)}", "${body.user_id}", 
     "${JSON.stringify(val.dyenumber)}", "${JSON.stringify(val.stockQty)}")`)
     let query = "INSERT INTO stockmaster (stocknum, cat_id, user_id, dyenumber, 
       stockQty) VALUES " + sql
    }

相关问题