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
相关产品推荐
相关产品推荐

