首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostGraphile: pgSettings user.id in makeExtendSchemaPlugin

PostGraphile: pgSettings user.id in makeExtendSchemaPlugin
EN

Stack Overflow用户
提问于 2021-06-11 21:34:44
回答 1查看 300关注 0票数 0

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

代码语言:javascript
复制
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命令。只想知道该设置是否已经可用:

代码语言:javascript
复制
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)
        },
      },
    },
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-12 20:13:44

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

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67943682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档