【发布时间】:2019-08-19 13:43:28
【问题描述】:
我用 Express JS 编写了一个后端应用程序,通过来自 API 端点的 GET 请求从数据库中检索信息。我用来从 API 端点获取的查询正在数据库中工作,但我无法在 Web 浏览器中获取与使用 Express JS 的响应相同的详细信息。尽我所能找出问题所在,但我找不到。
我试图检查我的查询是否有问题,但查询正在获取正确的详细信息,但我无法在网络浏览器中得到任何响应。
这是我认为我有错误的代码:
const { rows } = await pool.query(
'SELECT branches.ifsc, branches.bank_id, branches.branch, branches.address, branches.city, branches.district, branches.state FROM branches WHERE branches.branch LIKE $1% LIMIT $2 OFFSET $3' ,
[q, limit, offset]
);
res.send(rows[0]);
});
用于获取详细信息的 SQL 查询:
SELECT branches.ifsc, branches.bank_id, branches.branch, branches.address, branches.city, branches.district, branches.state FROM branches WHERE branches.branch LIKE '%RTGS%' ORDER BY branches.ifsc LIMIT 3;
错误日志:
Server is running on 7000
(node:19484) UnhandledPromiseRejectionWarning: error: syntax error at or near "LIMIT"
at Connection.parseE (/home/kiddo/Desktop/backend/node_modules/pg/lib/connection.js:604:11)
at Connection.parseMessage (/home/kiddo/Desktop/backend/node_modules/pg/lib/connection.js:401:19)
at Socket.<anonymous> (/home/kiddo/Desktop/backend/node_modules/pg/lib/connection.js:121:22)
at Socket.emit (events.js:200:13)
at addChunk (_stream_readable.js:294:12)
at readableAddChunk (_stream_readable.js:275:11)
at Socket.Readable.push (_stream_readable.js:210:10)
at TCP.onStreamRead (internal/stream_base_commons.js:166:17)
(node:19484) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:19484) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
【问题讨论】:
-
嘿,你得到什么回应?您可以尝试添加 console.log(rows);查看结果中的内容
-
我没有收到来自服务器的任何响应。它是一个空数组
-
console.log(rows)在您的查询之后显示什么?console.log(rows[0])在你的res.send(rows[0])之前显示了什么?而且,您应该在您的await周围添加一个try/catch,这样您就可以捕获并记录错误,并且至少在遇到错误时执行res.sendStatus(500)。你运行的是什么版本的 Express? -
undefined到底是什么?不可能console.log(rows)显示undefined,但console.log(rows[0])是一个空数组。那是不可能的。在向我们提供信息时,您需要更加具体。我在之前的评论中向您询问了两条信息,但仍然不知道其中任何一条的答案。 -
好的,所以您的
const { rows } = await pool.query(...)正在引发异常并且您没有得到查询结果。希望了解您的数据库的人可以帮助您找出原因。您还需要在await语句周围使用try/catch,以便您处理自己的错误。
标签: javascript node.js postgresql api express