PostgreSQL:压缩到PostgreSQL中的原始查询
我正在尝试将以下PostgreSQL:压缩到PostgreSQL中的原始查询,postgresql,sequelize.js,Postgresql,Sequelize.js,我正在尝试将以下Sequelize转换为原始PostgreSQL查询: db.User.findOne({ where: { id: 10003 }, include: [{ model: db.Diet, required: false, as: 'diets', // an array }, { model: db.Spice, required: false,
Sequelize
转换为原始PostgreSQL
查询:
db.User.findOne({
where: {
id: 10003
},
include: [{
model: db.Diet,
required: false,
as: 'diets', // an array
}, {
model: db.Spice,
required: false,
as: 'spice_level',
}]
}).then((user) => { ... }
以下是原始查询:
BEGIN;
DROP TABLE IF EXISTS temp_diet_table;
CREATE
TEMPORARY TABLE temp_diet_table ON
COMMIT
DROP AS
SELECT d.id,
d.name,
d.desc,
d.type,
d."createdAt",
d."updatedAt",
d.status,
d.user_id
FROM diet d
WHERE d.user_id = 10003;
(SELECT json_build_object ('id', u.ID, 'username', u.username, 'first_name', u.first_name, 'last_name', u.last_name, 'createdAt', u."createdAt", 'updatedAt', u."updatedAt", 'spice_level', json_build_object ('id', sp.ID, 'level', sp.LEVEL, 'updatedAt', sp."updatedAt", 'createdAt', sp."createdAt"), 'color', A.color, 'diets', COALESCE (
(SELECT json_agg (json_build_object ('id', d.ID, 'name', d.NAME, 'desc', d.DESC, 'type', d.TYPE, 'createdAt', d."createdAt", 'updatedAt', d."updatedAt", 'status', d.status))
FROM temp_diet_guest_table d
WHERE d.user_id = u.ID ), json_build_array ()))
FROM "user" u
INNER JOIN app_common A ON A.owner_id = u. ID
LEFT JOIN Spice sp ON sp.owner_id = u.ID
WHERE u.ID = r.user_id )))); COMMIT;
我得到以下错误:
ERROR: current transaction is aborted, commands ignored until end of transaction block
, Time: 0.082000s
我不熟悉
PostgreSQL
raw查询。我做错了什么?这不是一个查询,而是多个语句。Postgres是否支持在线连接?你能改为单独运行每条语句吗?是的。我有类似的查询,目前正在运行。您确定每个部分都正常运行吗?该语句可能有语法错误。您可以尝试将长而复杂的查询替换为在提交时创建临时表x作为SELECT 1
或一些非常小的值。因为存在开始
和提交
。测试每一个的好方法是什么?我会使用psql
命令行,但是任何类似的方法都可以。在将所有组件集成到这个怪物中之前,您需要验证每个组件是否有效。这不是一个查询,而是多个语句。Postgres是否支持在线连接?你能改为单独运行每条语句吗?是的。我有类似的查询,目前正在运行。您确定每个部分都正常运行吗?该语句可能有语法错误。您可以尝试将长而复杂的查询替换为在提交时创建临时表x作为SELECT 1
或一些非常小的值。因为存在开始
和提交
。测试每一个的好方法是什么?我会使用psql
命令行,但是任何类似的方法都可以。在将所有组件集成到此怪物之前,您需要验证每个组件是否有效。