我无法使用mongoose获取数组或对象以在Relay连接中使用它,实际上这很好用:
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中我可以获得数组。但是,当我尝试使用相同的"解决"使用Relay功能它不起作用!
getUsers: {
node: nodeField,
type: usersType,
resolve: (_, args) => {
return new Promise((resolve, reject) => {
Users.find(args, (err, users) => {
err ? reject(err) : resolve(users);
});
});
}
}
我认为原因是因为Users.find()返回Promise而不是Array或Obj。 如果我只是更改" Users.find()"使用返回数组的任何其他函数都可以正常工作。
所以主要的问题是如何使用" Users.find()"来获取数组或对象?而不是承诺? (,lean(),. exec())也没有帮助。
答案 0 :(得分:1)
npm i graphql-relay-connection --save
const {connectionFromPromisedArray} = mongooseConnection;
而不是connectionFromArray(get(), args)
我们可以通过Promise:connectionFromPromisedArray(collection.find(), args)
最后,您可以从Promise获取数组而无需大量代码。