README
Fields
Keystone contains a set of primitive fields types that can be imported from the @keystone-next/fields-legacy
package:
Field type | Description |
---|---|
Checkbox |
A single Boolean value |
DateTimeUtc |
Represents points in time, stored in UTC |
Decimal |
Exact, numeric values in base-10; useful for currency, etc. |
File |
Files backed various storage mediums: local filesystem, cloud based hosting, etc. |
Float |
An imprecise numeric value, stored as a floating point |
Integer |
A whole number |
Password |
A bcrypt hash of the value supplied; |
Relationship |
A link between the current list and others, often paired with a field on the other list |
Select |
One of several predefined string values, presented as a dropdown |
Text |
A basic but versatile text field of arbitrary length |
Virtual |
Read-only field with a developer-defined resolver, executed on read |
In addition to these, some complex types are packaged separately:
Field type | Description |
---|---|
AutoIncrement |
An automatically incrementing integer; the default type for id fields when using the Prisma DB adapter |
CloudinaryImage |
Allows uploading images to the Cloudinary image hosting service |
Tip: Need something else? Keystone lets you create custom field types to support almost any use case.
Usage
Fields definitions are provided when creating a list. Field definitions should be an object where the key is the field name and the value is an object containing the fields config:
const { Text } = require('@keystone-next/fields-legacy');
keystone.createList('Post', {
fields: {
title: { type: Text },
},
});
Config
Fields share some standard configuration options.
Option | Type | Default | Description |
---|---|---|---|
type |
FieldType |
(required) | |
schemaDoc |
String |
false |
A description for the field used in the GraphQL schema. |
defaultValue |
Any | Function |
undefined |
A valid default value for the field type. Functions must return a valid value. Use undefined to set no default, and null to set an empty default. |
isUnique |
Boolean |
false |
Whether or not the field should be unique. |
isRequired |
Boolean |
false |
Whether or not the field should be mandatory. |
access |
Boolean | Function | Object |
true |
See: Access control options for fields. |
label |
String |
Label for the field. |
Note: Many field types have additional config options. See the documentation for individual field types for more detail.
type
A valid Keystone
field type.
label
Sets the label for the field in the AdminUI
schemaDoc
A description of the field used used in the GraphQL schema.
defaultValue
Sets the value when no data is provided.
keystone.createList('Post', {
fields: {
title: {
type: Text,
defaultValue: ({ context, originalInput }) => {
/**/
},
},
description: { type: Text, defaultValue: 'Lorem ipsum...' },
},
});
For a 'nullable' field, set defaultValue: null
.
The defaultValue
can be a String
or Function
. Functions should returns the value, or a Promise for the value.
isUnique
Specifies whether the value should be unique or not. Will return an error is a user tries to create a field with a non-unique value.
isRequired
Specifies whether the field is required or not. Will return an error if mutations do not contain data.
access
Access control options for fields.
Options for create
, read
, update
and delete
- can be a function or Boolean. See the access control API documentation for more details.
Note: Field level access control does not accept graphQL where clauses.
cacheHint
HTTP cache hint for field.
Only static hints are supported for fields.