我正在使用Node和Express,并使用pg-promise库与我的Postgres数据库进行交互。我设置了许多查询,它们都工作正常。我编写的查询与在Postgres命令行中进行测试的其余查询无异。它所做的只是从属于特定用户的“奖励”表中的每个条目中获取文件名列表。但是,当我的服务器尝试执行代码时,它将引发多个异常:
TypeError:路径必须是字符串或缓冲区
\“ JOIN \”或附近的语法错误
相关代码为:
const GET_ALL_PDFS = PS('getAllPDFs', `SELECT pdf_filename AS filenames
FROM awards
JOIN users ON users.id = awards.award_giver
WHERE users.id = $1;`);
UserManagementDAO.getAllPDFs = (userId, cb) => {
db.any(GET_ALL_PDFS, userId)
.then(result => {
cb(null, result);
})
.catch(err => {
winston.error(`Error fetching all PDF filenames for user ${userId}: ${err}`);
cb(err);
});
};
我尝试使用''代替``,将SQL语句放在一行上,使用db.manyOrNone代替db.any重写整个SQL语句,直接将SQL语句放入而不是使用预准备语句,显式使用INNER JOIN代替JOIN,到目前为止,没有任何效果。我总是会遇到相同的错误。