You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apollo Client批量创建Directus event_datetime数据报错求助

解决Directus批量创建数据时的sort字段GraphQL错误

问题分析

你遇到的错误根源是GraphQL接口期望sort字段为整数类型,但实际传递的是数组原型上的sort方法(一个函数)。虽然你没有显式传入sort字段,但大概率是以下两种情况导致:

  • Directus中event_datetime模型的sort字段被设置为必填项,且类型为整数,GraphQL自动生成的输入类型强制要求提供该字段,序列化过程中意外读取了数组的sort方法。
  • React Native环境的对象序列化逻辑异常,将数组的原型方法误当作属性传递给了接口。

解决方案

1. 显式传入sort字段

给每个待创建的条目添加整数类型的sort值,比如按数组索引赋值:

const datesToCreate = [
  {
    timezone: "Test/Shit",
    sort: 0
  },
  {
    timezone: "Test/Shit2",
    sort: 1
  }
];

2. 修改Directus模型字段配置

登录Directus后台,找到event_datetime模型的sort字段:

  • 取消字段的必填选项,改为可选。
  • 确认字段类型为整数,如果业务不需要该字段,可直接删除。

3. 清理数组序列化内容

如果是React Native序列化逻辑导致的问题,可将数组转换为纯JSON对象,去除原型方法:

const datesToCreate = [
  { timezone: "Test/Shit" },
  { timezone: "Test/Shit2" }
];
// 清理数组,剥离原型方法
const cleanData = JSON.parse(JSON.stringify(datesToCreate));

await useCreateDateMutation({
  variables: {
    data: cleanData,
  },
  onCompleted: (data) => {
    dateIds.push(...data);
  },
  onError: (error) => {
    console.log(error);
  },
});

4. 验证GraphQL输入类型

通过Directus的GraphQL playground(通常是项目域名下的/graphql路径)查看create_event_datetimes_input的定义,确认sort字段是否带有!标记(带有则表示必填):

input create_event_datetimes_input {
  sort: Int! # 带!则为必填
  # 其他字段...
}

内容的提问来源于stack exchange,提问作者Moiz_Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:40:02