我刚刚使用 nodejs 和 express 编写了一个简单的 http api 服务器。它包装 mysql 数据库,并返回其数据。
但是,对于我执行的每个查询,我的服务器都会崩溃。
我在一个名为“db_manager”的文件中创建池连接:
const mysql = require("mysql2/promise");
require("dotenv").config();
try{
var pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
database: process.env.DB_NAME,
password: process.env.DB_PASSWORD,
});
} catch (err){
console.log(err)
}
module.exports = { pool };
然后我只是在我使用的各种文件中导入池。
const { pool } = require("./db_manager");
//code
var query = config.onlyOpened ? "SELECT * FROM `Deadlines` WHERE `private` = FALSE AND `closed` == FALSE" : "SELECT * FROM `Deadlines` WHERE `private` = FALSE";
const [rawResults, _] = await pool.execute(query);
它抛出了这个错误
~/Projects/MySQLExpress/node_modules/mysql2/lib/pool.js:177
throw e;
^
TypeError: Bind parameters must not contain undefined. To pass SQL NULL specify JS null
at ~/Projects/MySQLExpress/node_modules/mysql2/lib/connection.js:628:17
at Array.forEach (<anonymous>)
at PoolConnection.execute (~/Projects/MySQLExpress/node_modules/mysql2/lib/connection.js:620:22)
at ~/Projects/MySQLExpress/node_modules/mysql2/lib/pool.js:172:14
at ~/Projects/MySQLExpress/node_modules/mysql2/lib/pool.js:64:16
at PoolConnection.<anonymous> (~/Projects/MySQLExpress/node_modules/mysql2/lib/connection.js:777:13)
at Object.onceWrapper (events.js:422:26)
at PoolConnection.emit (events.js:315:20)
at ClientHandshake.<anonymous> (~/Projects/MySQLExpress/node_modules/mysql2/lib/connection.js:121:14)
at ClientHandshake.emit (events.js:315:20)
[nodemon] app crashed - waiting for file changes before starting...