无法在INSERT语句中使用正文值。

我有一个post路由,希望发送的body值名称以JSON格式提供。

我的server.js包含了以下内容。

app.use(express.json({ extended: false })); 

下面是路由的样子

router.post('/',
[
    check('name', 'Name is required!')
        .not()
        .isEmpty(),
],
async (req, res) => {
    const validationErrors = validationResult(req);
    if (!validationErrors.isEmpty()) {
        return res.status(400).json({ validationErrors: validationErrors.array() });
    }
    else {
        try {
            await odbc.connect(cn, (error, connection) => {
                console.log(req.body.name)
                connection.query(
                    "INSERT INTO test.amessages(name) VALUES(:req.body.name)",
                    (error, result) => {
                        if (error) {
                            throw error;
                        }
                        return res.status(200).json({ result });
                    }
                );
            });

        }
        catch (error) {
            console.error(error);
            return res.status(500).json({ msg: 'Server Error' });
        }
    }
});

变量前的console.log给了我一个正确的值提供给路由 通常情况下,当使用其他以sqlserver为目标的工具时,我可以输入${req.body.name},这样就可以了。在这种情况下,这种方法和下面的方法都不奏效–(req.body.name)、:req.body.name、(req.body.name)和其他各种组合。

下面来看看我是如何向路由提供值的。

{
    "name": "Test"
}

我如何在Insert语句中利用body值?

解决方案:

根据 文件 你可以将一个paramter数组传递给 query-函数,它将被绑定到 ? 价值。

connection.query("INSERT INTO test.amessages(name) VALUES(?)",
                    // actually with the json you provided it seems you rather want to use req.body.name
                    [req.body.test],
                    (error, result) => {
                        if (error) {
                            throw error;
                        }
                        return res.status(200).json({ result });
                    }
                );

给TA打赏
共{{data.count}}人
人已打赏
未分类

实现一个类数组,并重塑常见的列表方法,如append。

2022-9-13 15:35:19

未分类

从外部硬盘播放时,HTML5音频控制被灰化了

2022-9-13 15:35:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索