🛠️ 如何填充创建者字段,例如 createdBy
和 updatedBy
默认情况下,创建者字段 createdBy
和 updatedBy
已从 REST API 响应中删除。 通过在内容类型级别激活 populateCreatorFields
参数,可以在 REST API 中返回这 2 个字段。
GraphQL API 无法使用 populateCreatorFields
属性。
仅会填充以下字段:id
、firstname
、lastname
、username
、preferedLanguage
、createdAt
和 updatedAt
。
要将 createdBy
和 updatedBy
添加到 API 响应:
- 打开内容类型
schema.json
文件。 - 将
"populateCreatorFields": true
添加到options
对象:
json
{
"options": {
"draftAndPublish": true,
"populateCreatorFields": true
}
}
- 保存
schema.json
。 - 使用 generate CLI 或手动在
./src/api/[content-type-name]/middlewares/[your-middleware-name].js
中创建新的路由中间件 - 添加以下代码,您可以修改此示例以满足您的需求:
./src/api/test/middlewares/defaultTestPopulate.js
js
'use strict'
module.exports = (config, { strapi }) => {
return async (ctx, next) => {
if (!ctx.query.populate) {
ctx.query.populate = ['createdBy', 'updatedBy']
}
await next()
}
}
- 修改您的默认路由工厂以在您希望此人群应用到的特定路由上启用此中间件,并替换将 content-type/middleware 名称替换为您的名称:
./src/api/test/routes/test.js
js
'use strict'
const { createCoreRouter } = require('@strapi/strapi').factories
module.exports = createCoreRouter('api::test.test', {
config: {
find: {
middlewares: ['api::test.default-test-populate'],
},
findOne: {
middlewares: ['api::test.default-test-populate'],
},
},
})
没有 populate
参数的 REST API 请求默认将包含 createdBy
或 updatedBy
字段。