Strapi: GraphQL ctx.состояние не определено

#graphql #strapi

Вопрос:

У меня есть пользовательский контроллер для замены запроса по умолчанию с именем «groupedOrders», но когда я пытаюсь протестировать запрос, ответ

«сообщение»: «Не удается прочитать свойство «пользователь» неопределенного»,

код в api/grouped-order/controllers/grouped-order.js является:

 module.exports = {
    byUser: async ctx => {
        const user = ctx.state.user
        const resTypeUser = await strapi.query('tipo-usuario').find({ _id: user.tipo_usuario })
        var resGroupedOrder = { error: true }
        if (resTypeUser[0].super_admin) {
            resGroupedOrder = await strapi.query('grouped-order').find()
        } else if (resTypeUser[0].cliente) {
            resGroupedOrder = await strapi.query('grouped-order').find({ users_permissions_user: user._id })
        }

        return resGroupedOrder
    }
};
 

и код в api/grouped-order/config/schema.graphql.js является:

 module.exports = {
  definition: ``,
  query: ``,
  type: {},
  resolver: {
    Query: {
      groupedOrders: {
        description: "Retornar todos los pedidos dependiendo el tipo de usuario",
        resolverOf: "application::grouped-order.grouped-order.byUser",
        policies: [
            'plugins::users-permissions.permissions',
        ],
        resolver: async (obj, options, ctx) => {
          return await strapi.controllers["grouped-order"].byUser(ctx);
        }
      }
    },
  },
}
 

тест, который я пытаюсь выполнить в http://localhost:1337/graphql является:

 query groupedOrders($where:JSON){
  groupedOrders(where:$where){
    createdAt
    detail
    status
  }
}
 

и ЗАГОЛОВКИ HTTP:

 { 
  "Authorization": "Bearer TOKENJWT"
}
 

Ответ №1:

Решено, я просто добавляю этот код на свой контроллер:

 if (!ctx.state amp;amp; ctx.request amp;amp; ctx.request.header amp;amp; ctx.request.header.authorization) {
            const { id } = await strapi.plugins["users-permissions"].services.jwt.getToken(ctx);
            ctx.state.user = await strapi.plugins['users-permissions'].services.user.fetchAuthenticatedUser(id);
        }
 

мы можем добавить код глобально, например так: https://github.com/strapi/strapi/issues/9159#issuecomment-789484109