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

Keystone.js字段/类型有21项限制?表单数组存储无法超21项

解决Keystone.js数组字段21项输入限制的问题

这不是Keystone.js的基础限制,这个21项的上限大概率来自你数组字段的配置项,或是Admin UI组件的默认设置,下面是具体的排查和解决方法:

  • 检查字段定义中的maxItems配置
    Keystone的array类型字段允许通过maxItems()方法设置数组的最大长度。如果你的字段代码里写了类似maxItems(21),就会触发这个限制。解决方法很简单:

    • 若不需要限制数组长度,直接移除maxItems()配置;
    • 若需要更大的上限,把数值调整为你需要的大小(比如maxItems(100))。

    示例修改:

    // 原来的字段定义(带限制)
    fields: {
      userInputs: array(text()).maxItems(21)
    }
    
    // 修改后的字段定义(移除限制)
    fields: {
      userInputs: array(text())
    }
    
  • 排查Admin UI组件的自定义限制
    如果你使用了自定义的Admin UI组件来渲染这个数组字段,可能组件内部硬编码了输入项的数量上限。需要检查组件的逻辑代码,找到限制输入项数量的部分(比如判断数组长度是否超过20的条件),然后移除或调整这个限制值。

  • 确认数据库层面无限制
    顺便提一句:Keystone常用的MongoDB数据库本身对数组长度没有固定限制(只要整个文档大小不超过16MB的上限),所以这个问题肯定不是数据库导致的,不用在数据库端做调整。

如果按照上面的步骤排查后还是有问题,可以检查一下你的Keystone版本,某些旧版本可能存在UI组件的默认限制,这时升级到最新稳定版可能就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:24:58