如何解决PostGraphile:makeExtendSchemaPlugin 中的 pgSettings user.id
是否可以在 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 负载中发送它。如果我想要 SQL 命令,我看到 pg 可用。只想知道该设置是否已经可用:
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
很棒。但我必须创建整个解析器。相反,我创建了一个 custom mutation:
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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。