drupal - 使用 Graphql 和 Drupal 从多值字段中获取数据
问题描述
我正在使用 Drupal graphql模块从 Drupal 中公开我的数据。在检索简单数据(如 id、作者或自定义字段)时,一切都很好。
我的问题是我有一个存储 25 个整数的字段。
我的类型定义:
type Card {
id: Int!
title: String
author: String
numbers: [Int]
}
我的字段解析器:
$registry->addFieldResolver('Card', 'numbers',
$builder->compose(
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node:bingo_card'))
->map('path', $builder->fromValue('field_bingo_card_numbers'))
->map('value', $builder->fromParent()),
),
);
除了数字之外,我完美地收到了所有数据。它返回 25 次null
并出现如下错误:
"extensions": [
{
"message": "Expected a value of type \"Int\" but received: {\"value\":\"27\"}",
所以问题是返回 25 个对象 (?) 而不是多值字段中每个项目的值。
如果我尝试:
->map('path', $builder->fromValue('field_bingo_card_numbers.value'))
错误变为:
"message": "User Error: expected iterable, but did not find one for field Card.numbers.",
现在只null
为数字返回 1 次,而不是null
为每个单个数字返回。
有人有什么建议吗?
解决方案
您需要在“撰写”中添加类似以下内容
$builder->callback(function ($entity) {
$list = [];
foreach($entity as $item){
array_push($list, $item['value']);
}
return $list;
})
推荐阅读
- python - Tensorflow 数据集上的分片操作是确定性的吗?
- php - How to make a query with a condition with laravel?
- visual-studio-2017 - OpenMP 的 omp_set_num_threads() 如何与 2 个同时 OMP 操作一起工作
- windows - 在 Jenkins 的 Windows 虚拟机中运行 Selenium 测试时无法打开浏览器
- java - 使用表单提交重新加载 struts jqGrid
- sql - 在分区上查找下一个最小值
- cordova - cordova-camera plugin - 插件使应用程序在拍照后进入纵向模式
- excel - Power Query:如何将查询与为返回的每一行运行一个查询连接
- sqlite - 随机排序
- php - 基于对缓存对象的引用查询文档