Apollo GraphQl 模型属性未访问 ReactJs 中的对象

Posted

技术标签:

【中文标题】Apollo GraphQl 模型属性未访问 ReactJs 中的对象【英文标题】:Apollo GraphQl model attribute is not accessing object in ReactJs 【发布时间】:2020-10-13 16:52:02 【问题描述】:

我正在使用 Apollo GraphQl Query 在 ReactJs 中实现类别和子类别显示。

我尝试使用与 category 相同的表和字段。 ID, 分类名称, category_img, category_parent_id(同一张表的id), 类别状态,

typeDefs 和解析器如下

Category.js

const typeDefs = gql`
  extend type Query 
    getSingleCategory(id: ID): allCategory
  
`;
type allCategory 
    id: ID!
    category_name: String
    category_img: String
    category_parent_id: Int
    category_status: Status
 

const resolvers = 
  Query: 
   getSingleCategory: async (parent, args, context, info) => 
   var data = await db.category.findOne(
     where: 
        id: args.id,
      ,
      include: [
        
          model: db.category,
          as: "children",
          attributes: [["category_name", "children_name"]],
          nested: true,
          required: false,
        ,
      ],
      required: false,
    );
    return data;
 ,
,
,

GraphQl 中的模型

module.exports = function (sequelize, DataTypes) 
  var category = sequelize.define(
    "category",
    
      id: 
        type: DataTypes.INTEGER(10).UNSIGNED,
        allowNull: false,
        primaryKey: true,
        autoIncrement: true,
      ,
      category_name: 
        type: DataTypes.STRING(256),
        allowNull: false,
      ,
      category_img: 
        type: DataTypes.STRING(256),
        allowNull: false,
      ,
      category_parent_id: 
        type: DataTypes.INTEGER(10).UNSIGNED,
        allowNull: false,
        references: 
          // WorkingDays hasMany Users n:n
          model: "category",
          key: "children",
        ,
      ,
      category_status: 
        type: DataTypes.ENUM("Acitve", "Inactive"),
        allowNull: false,
      ,
    ,
    
      tableName: "category",
      timestamps: false,
    
  );
  category.associate = function (models) 
    models.category.belongsTo(models.category, 
      onDelete: "CASCADE",
      foreignKey: "category_parent_id",
      as: "children",
      targetKey: "id",
    );
  ;
  return category;
;

在 ReactJs 中 category.ts

export const GET_CATEGORYBY_ID = gql`
  query($catId: ID!) 
    getSingleCategory(id: $catId) 
      id
      category_name
      category_img
      category_parent_id
      category_status
    
  
`;

我正在尝试访问 data.getSingleCategory,我获得了所有参数,但无法从与 parent_name 相同的表中获取 children_name。

任何人都可以告诉我是什么问题我无法从同一个表中访问该 children_name 作为属性或者有任何其他方式,以便我们可以从同一个表中访问类别/子类别并将其显示到 reactjs 模板。

【问题讨论】:

【参考方案1】:

未在类型中[单独]定义,未在父类型中使用/定义为[作为“子”属性?],未在查询中请求...只是从响应中过滤掉。

【讨论】:

以上是关于Apollo GraphQl 模型属性未访问 ReactJs 中的对象的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS/Javascript/Graphql/React-apollo:无法读取未定义的属性“正在加载”

无法读取未定义的属性“findOne” - Vue.js、Apollo Server、GraphQL 错误

如何使用 Apollo Graphql 客户端和 React 解决“TypeError:无法读取未定义的属性“参数”?

Graphql实践使用 Apollo(iOS) 访问 Github 的 Graphql API

Graphql实践使用 Apollo(iOS) 访问 Github 的 Graphql API

Graphql实践使用 Apollo(iOS) 访问 Github 的 Graphql API