0

最近、GraphQL を使い始めました。名前のベースを使用して mongodb コレクションからレコードを取得できますが、同じコードを使用して _id(mongodb generated id) でデータを取得しようとすると、すべてのフィールドで null 値が取得されます。これが私のサンプルコードです...

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
    }
}

必要に応じて変更を提案してください...ありがとうございます。

4

1 に答える 1

2

mongoDB によって生成される「_id」フィールドは単なる文字列ではないため、実際には ObjectId("YOUR ID STRING HERE") です。

したがって、クエリでは、mongoDB は、フィードした文字列と等しい _id を見つけられません。

代わりに collection.findById() を使用してみてください。

于 2015-09-04T03:46:12.133 に答える