从Node.js调用MySQL存储过程
时间:2019-11-20 08:52:40 来源:igfitidea点击:
简介:在本教程中,您将学习如何从Node.js应用程序中调用MySQL中的存储过程。
调用存储过程的步骤类似于执行查询的步骤,如下所示:
连接到MySQL数据库服务器。
通过执行CALL spName语句来调用存储过程。
spName是存储过程的名称。关闭数据库连接。
调用MySQL存储过程示例
为了演示,我们创建了一个新的存储过程filterTodo,以基于完成字段的值查询todos表中的行。
DELIMITER $$ CREATE PROCEDURE `filterTodo`(IN done BOOLEAN) BEGIN SELECT * FROM todos WHERE completed = done; END$$ DELIMITER ;
存储过程filterTodo基于done参数返回todos表中的行。
如果done参数为true,则返回所有已完成的待办事项,否则返回未完成的待办事项。
如您所知,要在MySQL中调用存储过程,可以使用CALL语句。
例如,要调用filterTodo存储过程,请执行以下语句:
CALL filterTodo(true);
该语句返回以下结果集:
+----+--------------------------+-----------+ | id | title | completed | +----+--------------------------+-----------+ | 4 | It should work perfectly | 1 | +----+--------------------------+-----------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
以下storedproc.js程序调用filterTodo存储过程并返回结果集:
let mysql = require('mysql'); let config = require('./config.js'); let connection = mysql.createConnection(config); let sql = `CALL filterTodo(?)`; connection.query(sql, true, (error, results, fields) => { if (error) { return console.error(error.message); } console.log(results[0]); }); connection.end();
请注意,该程序使用了config.js模块,该模块存储数据库的信息:
let config = { host : 'localhost', user : 'root', password: '', database: 'todoapp' }; module.exports = config;
在CALL语句中,我们使用占位符(?)将数据传递到存储过程。
当我们在连接对象上调用query()方法时,我们将done参数的值作为query()方法的第二个参数传递。
让我们运行storedproc.js程序。
> node storedproc.js [ RowDataPacket { id: 4, title: 'It should work perfectly', completed: 1 } ]
该程序按预期显示了1行。
在本教程中,您学习了如何从Node.js程序中调用MySQL中的存储过程。