我尝试创建一个新用户,并将新用户 ID 与他们的 google ID 一起推送到身份验证表。
然后我想返回新用户,但即使我使用 select * 也没有返回任何值。 (但是用户被创建,并且 auth 表中的 auth 行也被创建)
这是查询:
WITH returned_user_id AS (
INSERT INTO users (display_name, avatar)
VALUES ('AAA', 'AAA')
RETURNING id
),
inserted_auth AS (
INSERT INTO auth (user_id, google_id)
SELECT id, '31231231'
FROM returned_user_id
)
SELECT *
FROM users
WHERE id = (SELECT user_id FROM auth WHERE google_id = '31231231');
这是我在后端使用它的方式:
//CREATE NEW ACCOUNT
async create(googleProfile:GoogleProfile):Promise<DataSingle>{
const {googleId, displayName, avatar} = googleProfile
try {
const {rows} = await pool.query(`
WITH returned_user_id AS (
INSERT INTO users (display_name, avatar)
VALUES ($1, $2)
RETURNING id
),
inserted_auth AS (
INSERT INTO auth (user_id, google_id)
SELECT id, $3
FROM returned_user_id
)
SELECT *
FROM users
WHERE id = (SELECT user_id FROM auth WHERE google_id = $3);
`, [displayName, avatar, googleId])
return {
data: snakeToCamel(rows)[0],
error:null,
status: 201
};
}catch (err){
console.error(err)
return {
data: null,
error: "Could not create the user",
status: 400
};
}
},
尝试
WITH returned_user_id AS (
INSERT INTO users (display_name, avatar)
VALUES ('AAA', 'AAA')
RETURNING id
),
inserted_auth AS (
INSERT INTO auth (user_id, google_id)
SELECT id, '31231231'
FROM returned_user_id
RETURNING user_id
)
select user_id from inserted_auth
;