我刚刚使用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...
发布于 2021-11-24 17:25:43
检查您的查询格式:
在第一个(AND closed == FALSE
)
0
和1
中使用==
来过滤布尔值var query = config.onlyOpened ?
"SELECT * FROM `Deadlines` WHERE `private` = 0 AND `closed` = 0" :
"SELECT * FROM `Deadlines` WHERE `private` = 0";
https://stackoverflow.com/questions/70099502
复制相似问题