如何使用graphql将mongodb中多个集合中的数据传递到1个反应表

Posted

技术标签:

【中文标题】如何使用graphql将mongodb中多个集合中的数据传递到1个反应表【英文标题】:How to pass data from multiple collections in mongodb to 1 react table using graphql 【发布时间】:2019-03-10 22:50:13 【问题描述】:

我有一个反应表,我通过 graphql 查询传递数据。但我的查询与数据库集合中的不同对象有关系。当我传递数据时,我只从一个集合中获取数据。

这是我的查询 ---

const getBikesQuery = gql`

AllBikeEntries
  bikenumber
  distributedyear
  ProjectName
    projectname
    
   
  
`;

我的表格只显示来自bikenumberdistributedyear 的数据。

这是其余的代码。

const columns = [
  
    Header: "Number of Bikes",
    accessor: "bikenumber"
  ,
  
    Header: "Season",
    accessor: "distributedyear"
  ,
  
    Header: "Project",
    accessor: "projectname"
  
];

class Entries extends Component 
  render() 

    let data = this.props;
    console.log(data)
    return(
        <div>
            <ReactTable
                data =data.AllBikeEntries                  

                columns =columns
                defaultPageSize=10
                />
        </div>
    );
  



export default graphql(getBikesQuery)(Entries);

projectname 的访问器无法读取,而且我还有其他更复杂的查询无法呈现。解决这个问题的最佳方法是什么??

只是添加我需要的数据记录在控制台上

 AllBikeEntries: Array(2)
 0:
 ProjectName: projectname: "INVC", __typename: "Projects", Symbol(id): 
 "$ROOT_QUERY.AllBikeEntries.0.ProjectName"
 bikenumber: 20
 distributedyear: 2015
 __typename: "Bikes"
 Symbol(id): "ROOT_QUERY.AllBikeEntries.0"
__proto__: Object
 1:
 ProjectName: projectname: "INVC", __typename: "Projects", Symbol(id): 
 "$ROOT_QUERY.AllBikeEntries.1.ProjectName"
 bikenumber: 35
 distributedyear: 2016
 __typename: "Bikes"

【问题讨论】:

【参考方案1】:

Mongo 和 GraphQL 只是结构化数据的来源。数据被正确获取(如记录),您在呈现树状结构数据时遇到问题。

只需阅读 react-table 文档,查看示例,f.e. this one ...您应该使用 accessor 来访问正确的数据部分。

【讨论】:

我知道我的问题是呈现结构化数据,但在这种情况下,我怎样才能让projectname 的访问器显示在我的表格中?任何帮助将不胜感激。 试试accessor: d =&gt; d.ProjectName.projectname?我不使用这个包...它是一个功能,您可以插入console.log()d =&gt; console.log(d); return d.ProjectName.projectname; - 只是尝试找到正确的方法 d.ProjectName["projectname"]?有记录吗? 没有记录,访问有问题,要么我重组了查询,但应该有办法解决这个问题.. accessor: d =&gt; d.ProjectName.projectname 应该可以工作。如果不是,那么您在此处发布的代码不是您正在运行的代码。

以上是关于如何使用graphql将mongodb中多个集合中的数据传递到1个反应表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GraphQL 和 Mongodb 编写 lambda 函数?

MongoDB:将来自多个集合的数据合并为一个..如何?

使用 Prisma + MongoDB + GraphQL 的嵌套关系返回 null

无法从 graphql 突变更新 mongodb 集合

将多个参数传递给 GraphQL 查询

使用 MongoDB 和 Graphql 管理聊天室中的消息