Skip to content

集合配置 (Collection Configs)

集合(Collection)是一组共享相同模式的记录,称为文档 (Documents)。您可以根据应用需求定义任意数量的集合。集合中的每个文档都会根据您定义的字段存储在数据库中,并自动生成用于管理文档的 Local APIREST APIGraphQL API

集合还可以用于实现 身份验证 (Authentication)。通过定义启用了 auth 选项的集合,该集合将获得额外的操作来支持用户认证。

集合是组织应用中重复数据的主要方式,比如用户、产品、页面、文章以及其他您需要管理的内容类型。每个集合都可以拥有自己独特的 访问控制 (Access Control)钩子 (Hooks)管理面板选项 (Admin Options) 等功能。

要定义一个集合配置,请在 Payload Config 中使用 collection 属性:

javascript
import { buildConfig } from 'payload'

export default buildConfig({
  // ...
  collections: [
    
    // Your Collections go here
  ],
})

TIP

如果您的集合(Collection)只打算存储单个文档 (Document),那么建议使用 Global 代替集合。

配置选项

通常,最佳实践是将您的 Collections(集合)写在单独的文件中,然后将它们导入到主 Payload Config(配置文件)中。

以下是一个简单的 Collection Config 示例:

javascript
import type { CollectionConfig } from 'payload'

export const Posts: CollectionConfig = {
  slug: 'posts',
  fields: [
    {
      name: 'title',
      type: 'text',
    },
  ],
}

以下是可用的选项:

选项描述
adminAdmin Panel(管理面板)的配置选项。更多详情。
access提供访问控制函数,精确定义谁能对该集合中的文档执行哪些操作。更多详情。
auth如果希望该集合支持认证功能,可以在这里指定选项。更多详情。
custom扩展点,用于添加自定义数据(例如插件)。
disableDuplicate设置为 true 时,在编辑该集合的文档时不显示“复制”按钮,并阻止所有 API 执行复制操作。
defaultSort传入一个顶层字段作为默认排序字段。在集合列表视图中显示时,字段名前加 - 表示降序排列。可以传入字符串数组指定多个字段排序。
dbName自定义数据库表名或集合名(取决于数据库适配器)。如果未定义,将自动从 slug 生成。
endpoints为 REST API 添加自定义路由。设置为 false 可禁用路由。更多详情。
fields*字段类型数组,用于定义此集合中文档存储数据的结构和功能。更多详情。
graphQL管理与该集合相关的 GraphQL 属性。更多详情。
hooksHooks(钩子)的入口。更多详情。
labels集合的单数和复数标签,用于在 Payload 中识别此集合。如果未定义,将自动从 slug 生成。
lockDocuments启用或禁用文档锁定。默认启用锁定。可传入对象进行配置,或设置为 false 关闭锁定。更多详情。
slug*唯一的、URL 友好的字符串,作为该集合的标识符。
timestamps设置为 false 时禁用文档自动生成的 createdAtupdatedAt 时间戳。
typescript包含 interface 属性的对象,定义用于生成 TypeScript 模型的文本。如果未定义,将自动从 slug 生成。
upload如果希望该集合支持文件上传,可在此指定选项。更多详情请查看 Uploads 文档
versions设置为 true 启用默认版本配置,也可以传入对象属性进行详细配置。更多详情。
defaultPopulate指定从其他文档中填充该集合时要选择的字段。更多详情。
indexes定义该集合的复合索引。可用于加速查询/排序多个字段,或确保多个字段之间的唯一性。
forceSelect指定始终选择的字段,无论 select 查询如何,这对于访问控制或钩子中的字段检查非常有用。

带星号 (*) 的属性是必填项。

Fields

字段定义了集合中文档的结构。如果想了解更多,请查看 Fields 文档

Access Control

集合的访问控制决定了用户对该集合中的文档可以执行哪些操作,哪些不能执行。想了解更多,请查看 Access Control 文档

Hooks

集合钩子允许你在文档生命周期的特定事件中执行自定义逻辑。如果想了解更多,请查看 Hooks 文档

Admin Options

集合在管理面板中的行为可以完全自定义,以满足应用程序的需求。这包括对导航链接进行分组或隐藏、添加自定义组件、选择在列表视图中显示哪些字段等等。

要为集合配置管理选项,请在集合配置中使用 admin 属性。

javascript
import type { CollectionConfig } from 'payload'

export const MyCollection: CollectionConfig = {
  // ...
  admin: {
    
    // ...
  },
}

以下选项可用:

选项描述
group用于在管理导航中将集合和全局链接分组的文本或本地化对象。设置为 false 可隐藏导航链接,但保留其路由可访问。
hidden设置为 true 或一个函数(传入当前用户),返回 true 以从导航和管理路由中排除此集合。
hooks该集合的管理特定钩子。详见更多内容。
useAsTitle指定一个顶层字段作为管理面板中的文档标题。如果未定义字段,则使用文档ID作为标题。具有 virtual: true 的字段无法用作标题。
description在列表视图中显示在集合标签下方的文本,以提供更多信息给编辑者。或者,你可以使用 admin.components.Description 来渲染一个 React 组件。
defaultColumns一个字段名数组,对应在该集合的列表视图中默认显示的列。
disableCopyToLocale在编辑此集合的文档时禁用“复制到本地”按钮。仅在启用了本地化时适用。
hideAPIURL编辑此集合的文档时隐藏“API URL”元字段。
enableRichTextLink富文本字段提供了一个“链接”元素,允许用户在富文本中自动引用相关文档。默认设置为 true
enableRichTextRelationship富文本字段提供了一个“关系”元素,允许用户在富文本中自动引用相关文档。默认设置为 true
meta在管理面板中应用到该集合的页面元数据覆盖。详见更多内容。
preview在管理面板中生成预览 URL 的函数,可以指向你的应用程序。详见更多内容。
livePreview启用实时编辑,提供前端应用程序的即时视觉反馈。详见更多内容。
components替换此集合内使用的 React 组件。详见更多内容。
listSearchableFields指定在列表搜索视图中应该搜索哪些字段。详见更多内容。
pagination为此集合设置分页特定选项。详见更多内容。
baseListFilter可以定义此集合列表视图的默认基础筛选条件,该条件将与用户执行的任何筛选条件合并。

自定义组件

集合可以设置自己的自定义组件,这些组件仅适用于管理面板中该集合特定的 UI。这包括诸如保存按钮或整个编辑视图等元素。

要覆盖集合组件,请在集合配置中使用 admin.components 属性:

javascript
import type { CollectionConfig } from 'payload'

export const MyCollection: CollectionConfig = {
  // ...
  admin: {
    components: {
      
      // ...
    },
  },
}