集合配置(Collection Config)
集合(Collection)是一组记录,称为文档(Documents),它们都共享一个共同的模式(schema)。您可以根据应用程序的需求定义任意多的集合。每个集合中的文档都根据您的定义存储在数据库中,并自动生成用于管理您的文档的本地 API、REST API和GraphQL API。
集合还用于在 Payload 中实现认证。通过定义一个带有auth
选项的集合,该集合将获得额外的操作以支持用户认证。
集合是结构化应用程序中重复数据的主要方式,例如用户、产品、页面、帖子和其他您可能想要管理的内容类型。每个集合可以有自己的独特访问控制、钩子、管理选项等。
要定义集合配置,请在您的Payload 配置中使用collections
属性:
import { buildConfig } from 'payload'
export default buildConfig({
// ...
collections: [
// 您的集合在这里
],
})
提示: 如果您的集合只打算包含单个文档,请考虑使用全局。
配置选项
通常,将集合写在单独的文件中,然后导入到主Payload 配置中是最好的实践。
以下是一个简单的集合配置示例:
import type { CollectionConfig } from 'payload'
export const Posts: CollectionConfig = {
slug: 'posts',
fields: [
{
name: 'title',
type: 'text',
},
],
}
提醒: 更多复杂的例子,请查看 Payload 仓库中的模板和示例目录。
以下是可用的选项:
选项 | 描述 |
---|---|
admin |
管理面板的配置选项。更多细节。 |
access |
提供访问控制函数,定义谁可以对这个集合中的文档执行什么操作。更多细节。 |
auth |
如果您希望这个集合具有认证功能,请指定选项。更多细节。 |
custom |
添加自定义数据的扩展点(例如插件)。 |
disableDuplicate |
当设置为 true 时,在编辑此集合中的文档时不显示“复制”按钮,并阻止所有 API 中的 duplicate 。 |
defaultSort |
传递一个顶级字段以在集合列表视图中默认排序。在字段名前加上减号(”-“)以降序排序。可以通过使用字符串数组指定多个字段。 |
dbName |
自定义表或集合名称,取决于数据库适配器。如果未定义,则从 slug 自动生成。 |
endpoints |
添加 REST API 的自定义路由。设置为 false 以禁用路由。更多细节。 |
fields * |
字段类型数组,将决定存储在此集合中的数据的结构和功能。更多细节。 |
graphQL |
包含 singularName 和 pluralName 字符串的对象,用于模式生成。如果未定义,则从 slug 自动生成。设置为 false 以禁用 GraphQL。 |
hooks |
钩子的入口点。更多细节。 |
labels |
在整个 Payload 中识别此集合的单数和复数标签。如果未定义,则从 slug 自动生成。 |
lockDocuments |
启用或禁用文档锁定。默认情况下,文档锁定是启用的。设置为对象以配置,或设置为 false 以禁用锁定。更多细节。 |
slug * |
唯一且 URL 友好的字符串,将作为此集合的标识符。 |
timestamps |
设置为 false 以禁用文档自动生成的 createdAt 和 updatedAt 时间戳。 |
typescript |
包含属性 interface 的对象,用作模式生成中的文本。如果未定义,则从 slug 自动生成。 |
upload |
如果您希望此集合支持文件上传,请指定选项。更多信息,请参考上传文档。 |
versions |
设置为 true 以启用默认选项,或使用对象属性进行配置。更多细节。 |
defaultPopulate |
指定在从另一个文档中填充此集合时选择哪些字段。更多细节。 |
* 星号表示该属性是必需的。
字段
字段定义集合中文档的模式。要了解更多信息,请访问字段文档。
访问控制
集合访问控制决定了用户可以和不可以对集合中的任何给定文档做什么。要了解更多信息,请访问访问控制文档。
钩子
集合钩子允许您在文档生命周期的特定事件中执行自己的逻辑。要了解更多信息,请访问钩子文档。
管理选项
您可以自定义管理面板在集合基础上的行为方式。要了解更多信息,请访问集合管理选项文档。
TypeScript
您可以从 Payload 导入类型,以帮助编写集合配置更容易和类型安全。有两个主要类型代表集合配置,CollectionConfig
和 SanitizedCollectionConfig
。
CollectionConfig
类型表示其完整形式的原始集合配置,其中只有最少的属性被标记为必需。SanitizedCollectionConfig
类型表示在完全清理后的集合配置。通常,这只由 Payload 内部使用。
import type { CollectionConfig, SanitizedCollectionConfig } from 'payload'
希望这些信息能帮助您更好地理解和使用 Payload 的集合配置。如果您有任何其他问题或需要进一步的帮助,请随时告诉我。