Open videni opened 4 years ago
I use the example here, but the promise returned by loadMany method never get triggered, why?
class CustomerLoader { /** * @var WebonyxGraphQLSyncPromiseAdapter */ private $promiseAdapter; public function __construct($promiseAdapter) { $this->promiseAdapter = $promiseAdapter } public function all(array $userIds) { $users = CSessionInfo::query() ->whereIn('id', $userIds) ->get() ->groupBy('id'); $indexed = array_reduce($userIds, function($curry, $current) use($users) { $curry[] = $users->has($current) ? $users->get($current): null; return $curry; }, []); return $this->promiseAdapter->all($indexed); } public function getLoader() { return new DataLoader(function(array $userIds){ $this->all($userIds); }, $this->promiseAdapter); } // this method is mapped to author field . public function resolveAuthor($parent) { return $this->getLoader()->load($parent['authorId']); } }
$graphQLPromiseAdapter = new SyncPromiseAdapter(); $dataLoaderPromiseAdapter = new WebonyxGraphQLSyncPromiseAdapter($graphQLPromiseAdapter); $userLoader = new DataLoader(function ($keys) { /.../ }, $dataLoaderPromiseAdapter);
GraphQL::setPromiseAdapter($graphQLPromiseAdapter);
@videni is it fixed or can you provide a test?
I use the example here, but the promise returned by loadMany method never get triggered, why?
$graphQLPromiseAdapter = new SyncPromiseAdapter(); $dataLoaderPromiseAdapter = new WebonyxGraphQLSyncPromiseAdapter($graphQLPromiseAdapter); $userLoader = new DataLoader(function ($keys) { /.../ }, $dataLoaderPromiseAdapter);
GraphQL::setPromiseAdapter($graphQLPromiseAdapter);