gpt4 book ai didi

node.js - NodeJS+express 多次向表插入数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:22 24 4
gpt4 key购买 nike

我是 NodeJs 新手。

我正在尝试创建一个简单的服务器(nodeJS + Postgres),每次使用参数调用 URL 时,它都会向数据库插入一个新行(基于 URL)。问题是,以下代码在第一次调用 URL 时有效,但第二次调用时不会将数据插入数据库。

如何让它在每次调用 URL 时都起作用?

谢谢

const express = require('express')
const app = express()
const port = process.env.PORT || 3000
const { Client } = require('pg');

const client = new Client({
connectionString: 'postgres://...........',
ssl: true,
});



app.get('/item/', (req, res) =>
(client.connect()
.then(()=>console.log('sucessful connection to DB'))
.then(()=>client.query(`INSERT INTO items(id,user) values('${req.query.id}','${req.query.user}')`))
.then(res.send("user sent"))
.catch(e=>console.log(e))
.finally(()=>client.end())))



app.listen(port, () => console.log(`Example app listening on port ${port}!`))

最佳答案

您正在重用客户端,但您不能这样做。对于您的情况,最好使用连接 pool .

const pool = new Pool({
connectionString: 'postgres://...........',
ssl: true,
})

app.get('/item/', (req, res, next) => {

pool.query('...')
.then(result => res.send('ok'))
.catch(next)
})

此外,不要连接这些值,否则您很容易受到 SQL 注入(inject)攻击。使用parameterized query相反

关于node.js - NodeJS+express 多次向表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59339142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com