【发布时间】:2020-05-22 20:39:08
【问题描述】:
我正在尝试修改 KeystoneJS 5 中特定字段的保存数据。resolveInput field hook 似乎是一个好方法。这是上面文档中给出的示例:
const resolveInput = ({
operation,
existingItem,
originalInput,
resolvedData,
context,
actions,
}) => {
// Input resolution logic
// Object returned is used in place of resolvedData
return resolvedData;
};
resolveInput 的返回可以是 Promise 或 Object。它应该 解析为与已解析数据相同的结构。结果是 按执行顺序传递给下一个函数。
因此,我列表中字段的定义是
text: {
type: Wysiwyg,
hooks: {
async resolveInput({ originalInput,resolvedData }) {
console.log('resolvedData');
console.log(resolvedData);
return resolvedData;
}
}
首先,我只是返回传入的 resolvedData 参数,根据文档,它是
resolvedData Object The data received by the GraphQL mutation plus defaults values
但是,我每次都会收到以下错误
GraphQLError
Cast to string failed for value "{ text: '<p><img src="static/blop.jpg" alt="" width="580" height="388" /><img src="static/blop.jpg" alt="" /></p>' }" at path "text"
我不确定问题是什么或如何解决它——我只是返回传入的相同数据。当我移除钩子时,一切正常。
编辑
我相信答案是一个不返回整个resolvedData对象,而是返回你所在的那个对象上的字段。因此,在在以下情况下,将返回resolvedData.text(或resolvedData.title)。我相信文档可以改进,因为它似乎返回了整个 resolvedData 对象。
【问题讨论】:
标签: graphql keystonejs