gpt4 book ai didi

node.js - postgres SELECT 查询返回不可用的结果

转载 作者:太空宇宙 更新时间:2023-11-03 22:48:42 25 4
gpt4 key购买 nike

我有一个简单的 SELECT 查询,它返回不可用的结果。我在node.js中使用pg-promise

[
{
"function_name": "(f10d1988-4db5-49de-97ab-0c8b15bedfa7,image.jpg,Image)"
},
{
"function_name": "(f10d1988-4db5-49de-97ab-0c8b15bedfa7,image2.jpg,Image 2)"
}
]

但我期待一个基本的 json 结构,例如

[
{
id: '',
title: '',
image: ''
},
{...etc}
]

为什么要这样做?如何获得标准化结果?

我的查询如下所示:

CREATE OR REPLACE FUNCTION get_photos(
title_param TEXT
)
RETURNS TABLE(
id UUID,
image varchar(200),
title varchar(200)
) AS
$func$
BEGIN
RETURN QUERY SELECT
i.id,
i.image,
i.title
FROM images AS i
WHERE i.title = title_param;
END;
$func$ LANGUAGE PLPGSQL;

这是我的数据库连接器设置,几乎都是默认设置。

require('dotenv').config();
const Promise = require('bluebird');
const pg = require('pg-promise')({
promiseLib: Promise
});

const config = {
user: process.env.USER,
host: process.env.HOST,
database: process.env.DATABASE,
password: process.env.PASSWORD
};

const db = pg(config);

export default db;

这是调用该函数的快速端点:

export const getData = async (req, res) => {
const { title } = req.query;
let data;
try {
data = await db.many('SELECT function_name($1)', [title]);
} catch (err) {
data = err;
}
res.send(data);
};

编辑

我手动运行查询,而不是通过函数,并且数据正确返回,这意味着我的 TABLE() 返回存在问题。什么可能导致此问题?

images = await db.many(`
SELECT
p.id,
p.img,
p.type,
p.title
FROM photos p
WHERE p.type = '${type}';
`, [type]);

最佳答案

因为该函数被定义为返回一个表,所以你需要像使用表一样使用它:

SELECT * FROM function_name($1)

关于node.js - postgres SELECT 查询返回不可用的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59464085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com