如何在 nodejs 中将其转换为 postgresql 存储过程

How to convert this into postgresql stored procedures in nodejs

提问人:Ashley Ferns 提问时间:12/5/2022 最后编辑:Ashley Ferns 更新时间:12/5/2022 访问量:24

问:

我想将 postgresql 查询更改为 Nodejs 中的存储过程。

app.post("/add", async(req, res) => {
try {
    const { name, email, hobby } = req.body;
    const newStudent = await pool.query("INSERT INTO student (name, email, hobby) VALUES ($1, $2, $3) RETURNING *", [name, email, hobby]);
    res.json(newStudent.rows);
} catch (err) {
    console.error(err.message);
}

})

节点 .js PostgreSQL 过程 存储函数

评论

0赞 12/5/2022
由于要返回生成的值,因此需要一个函数。过程并不意味着返回某些东西。
0赞 O. Jones 12/5/2022
存储过程是存在于关系数据库服务器中的大量代码。您可以使用 CALL 过程 (arg, arg); 从 nodejs(或 Java,或其他)等宿主语言调用它。

答:

0赞 NeutroLink 12/5/2022 #1
-- Create a stored procedure to insert a new student

CREATE OR REPLACE FUNCTION add_student (name VARCHAR, email VARCHAR, hobby VARCHAR)
RETURNS TABLE(id INT, name VARCHAR, email VARCHAR, hobby VARCHAR)
AS $$
BEGIN
    INSERT INTO student (name, email, hobby) VALUES (name, email, hobby) RETURNING *;
    RETURN QUERY SELECT * FROM student;
END;
$$ LANGUAGE plpgsql;
-- Execute the stored procedure to add a new student

SELECT add_student('John Doe', '[email protected]', 'Gardening');

评论

0赞 12/5/2022
每次调用函数时,函数都会返回整个表的内容。student
0赞 Richard Huxton 12/5/2022
@NeutroLink,您可以通过将代码放在仅包含三个反引号 (') 的两行之间来设置代码的格式
0赞 Ashley Ferns 12/5/2022
我实际上想知道如何在 nodejs 中编写存储过程。
0赞 Frank Heikens 12/5/2022
返回会更有意义,只是新记录而不是所有记录。