Keystone 6 js:复选框为空值



Keystone js 6不允许我添加复选框字段,它看起来如下

// checkbox_field: checkbox({ label: 'Checkbox Field', access: { read: ()=> true, update: ()=> true } }),

我认为这是因为我在db中有一些空值,因为我有一个与文本类型字段相同的问题,这很容易使用db解决。isNullable === true。但是,我找不到一个类似的复选框字段类型的选项。

我尝试使用defaultValue选项和db。地图,但它没有帮助

Keystone在哪些方面不允许';这个吗?你得到一个错误吗?如果没有关于正在发生什么的具体信息,很难帮助解决问题。

我已经将您提供的字段配置添加到任务管理器示例的本地副本中,没有问题。

import { list } from '@keystone-6/core';
import { allowAll } from '@keystone-6/core/access';
import { checkbox, relationship, text, timestamp } from '@keystone-6/core/fields';
import { select } from '@keystone-6/core/fields';
export const lists = {
Task: list({
access: allowAll,
fields: {
label: text({ validation: { isRequired: true } }),
// Test field ⬇️
checkbox_field: checkbox({
label: 'Checkbox Field',
access: { read: () => true, update: () => true }
}),

// .. other fields
},
}),
.. other lists
};

我已经将db.useMigrations设置为true,所以当我重新启动应用程序时,我被提示创建并命名一个将添加列的迁移。生成的SQL如下所示。这是针对PostgreSQL的,但它应该适用于其他数据库提供商。

-- AlterTable
ALTER TABLE "Task" ADD COLUMN     "checkbox_field" BOOLEAN NOT NULL DEFAULT false;

这将向DB添加一个非空列,并将默认值应用于任何现有记录(因此不应该有任何"阻塞")。

为了简单起见,Keystone Checkbox字段类型不支持DB字段本身为空,尽管它确实给了你一些选项来控制GraphQL类型的空性,即:graphql.read.isNonNullgraphql.create.isNonNull。这允许这样的用例:由于访问控制,一个值可能作为null返回,或者作为null传递给创建,但由于默认值或正在配置的钩子而保存一个值。

最新更新