2016-07-06 36 views
1

我不能与猫鼬获取数组或对象在继电器连接使用它,其实这工作得很好:GraphQL,继电器和MongoDB(猫鼬)如何获取数组

let queryType = new GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
     getUsers: { 
      type: new GraphQLList(userType), 
      resolve: (_, args) => { 
       return new Promise((resolve, reject) => { 
        Users.find(args, (err, users) => { 
         err ? reject(err) : resolve(users); 
        }); 
       }); 
      } 
     } 
    }) 
}); 

在GraphiQL我可以得到阵列。但是,当我尝试使用与继电器相同的“解决”功能它不起作用!

getUsers: { 
    node: nodeField, 
    type: usersType, 
    resolve: (_, args) => { 
     return new Promise((resolve, reject) => { 
      Users.find(args, (err, users) => { 
       err ? reject(err) : resolve(users); 
      }); 
     }); 
    } 
} 

,我认为原因是因为Users.find()返回,而不是数组或承诺的OBJ。 相同的功能,如果我只是改变“Users.find()”任何其他函数与返回数组工作正常。

所以,主要问题如何获得数组或对象与“Users.find()”,而不是承诺? (,lean(),.exec())也没有帮助。的

回答

1
npm i graphql-relay-connection --save 
const {connectionFromPromisedArray} = mongooseConnection; 

,而是connectionFromArray(get(), args)我们可以通过承诺:connectionFromPromisedArray(collection.find(), args)

最后,你可以不用大量代码获取来自无极阵列。