通过 _id 使用 graphQL 获取数据

Posted

技术标签:

【中文标题】通过 _id 使用 graphQL 获取数据【英文标题】:Fetching data with qraphQL by _id 【发布时间】:2015-11-27 13:41:56 【问题描述】:

我最近开始使用 GraphQL。我能够以名称为基础从 mongodb 集合中获取记录,但是如果我尝试使用相同的代码通过 _id(mongodb generated id) 获取数据,我将获得所有字段的空值。 这是我的示例代码...

query: new GraphQLObjectType(
    name: 'RootQueryType',
    fields: 
    // To get a user based on id
      getUser: 
        type: UserType,
        args: 
          _id: 
            description: 'The username of the user',
            type: new GraphQLNonNull(GraphQLString)
          
        ,

       resolve: (root, _id) => 
         //Connect to Mongo DB
        return mongo()
            .then(db =>  
             return  new Promise(
              function(resolve,reject)
                 //Query database
                 let collection = db.collection('users');
                 collection.findOne( _id,(err,userData) =>              
                  if (err) 
                    reject(err);
                    return;
                   
                  console.log(userData);
                  resolve(userData);
                );
               )
             );
            
          ,

示例查询是:

 
      getUser ( _id: "55dd6300d40f9d3810b7f656") 
        
               username,
               email,
               password
       

我收到如下回复:


    "data": 
        "getUser": null
    

如果需要,请建议我进行任何修改... 谢谢。

【问题讨论】:

【参考方案1】:

因为mongoDB生成的“_id”字段不只是一个字符串,实际上是ObjectId("YOUR ID STRING HERE")。

所以在您的查询中,mongoDB 不会找到任何与您提供给它的字符串相等的 _id。

尝试使用 collection.findById() 代替。

【讨论】:

以上是关于通过 _id 使用 graphQL 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL:获取部分字符串匹配

Apollo/GraphQL:如何获取嵌套元素?

如何通过 GraphQL 从 json 获取数据?

使用 GraphQL 查询从多语言模式中获取本地化数据

无法获取字符串数组

使用graphql github api通过Id获取提交信息