1

リレー接続で使用するためにマングースで配列またはオブジェクトを取得できません。実際、これは正常に機能します。

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() が Array や Obj ではなく Promise を返すためだと思います。「Users.find()」を戻り配列を持つ他の関数に変更するだけで、同じ関数が正常に機能します。

Promise の代わりに "Users.find()" を使用して配列またはオブジェクトを取得するにはどうすればよいですか? (,lean(), .exec()) も役に立ちません。

4

1 に答える 1

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

代わりに、connectionFromArray(get(), args)Promise を渡すことができます。connectionFromPromisedArray(collection.find(), args)

最後に、大量のコードなしで Promise から配列を取得できます。

于 2016-07-07T19:43:14.890 に答える