PostGraphile: pgSettings user.id in makeExtendSchemaPlugin



是否可以在PostGraphile插件中访问pgSettings,特别是makeExtendSchema?这是我的中间件:

app.use(
postgraphile(
process.env.DATABASE_URL,
"public",
{
watchPg: true,
classicIds: true,
pgSettings: (req) => {
if (req.headers.cookie) {
const cookies = cookie.parse(req.headers.cookie);
return {
'user.id': cookies['next-auth.session-token']
}
}
return;
},
appendPlugins: [require('./add-cookie-plugin')]
}
)
);

我想要一个插件,将userId添加到每个突变中,因为它在cookie中,我不能在graphql负载中发送它。我看到pg是可用的,如果我想要一个SQL命令的话。只是想知道设置是否已经可用:

const { makeExtendSchemaPlugin, gql } = require("graphile-utils");

module.exports = makeExtendSchemaPlugin(build => {
const { pgSql: sql, inflection } = build;

return {
typeDefs: gql`
extend type Query {
userId: Int
}
`,
resolvers: {
Query: {
async userId() {
return // current_setting('user.id', true)
},
},
},
}
});

additionalGraphQLContextFromRequest很棒。但我必须创建整个解析器。相反,我创建了一个自定义突变:

CREATE FUNCTION public.create_row(content text)
RETURNS public.rows
AS $$
INSERT INTO public.rows (user_id, content)
SELECT u.user_id, content FROM users u JOIN sessions s ON u.user_id=s.user_id WHERE s.session_token = current_setting('user.id', true)
RETURNING *;
$$ LANGUAGE sql VOLATILE STRICT;

最新更新