Open
Description
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);
Metadata
Metadata
Assignees
Labels
No labels