【发布时间】:2013-12-06 22:13:16
【问题描述】:
我有一个 SQL 查询,在本机 Postgresql 客户端(psql、Navicat 等)中运行时返回 356 行,但在我正在开发的 node.js 服务中运行时只返回 214 行。这是查询:
SELECT discs.id AS id,
discs.is_streamable AS is_streamable,
discs.updated_at AS updated_at,
albums.title AS album_title,
'https://www.slurpie.com/albums/' || albums.slug AS album_url,
artists.name AS main_artist,
genres.name AS genre,
albums.cover_remote_url AS album_art
FROM discs
JOIN albums
ON albums.id = discs.album_id
JOIN artists
ON artists.id = albums.main_artist_id
JOIN genres
ON genres.id = albums.genre_id
JOIN users
ON users.id = discs.user_id
WHERE users.authentication_token = 'itsasecret'
ORDER BY main_artist
node.js 服务正在使用 restify 和 pg-query(尽管我已经使用底层的“pg”模块对其进行了测试,结果相同)。
查看查询的输出,我找不到在节点内部运行查询时遗漏的行之间的任何相似之处(我认为可能是列中的空值,或者大量列数据、特殊字符等)。
【问题讨论】:
-
你在psql和node之间用同一个用户登录吗?是否有可能发生了一些 search_path 魔术,并且两个或多个具有相同名称的表存在于不同的模式中?
-
在来自节点应用程序的连接字符串中使用与 sql 客户端相同的凭据。
-
也许尝试通过 psql 和节点“解释分析详细选择...”并按照计划查看数字不同的地方?
标签: node.js postgresql