如何在strapi查询中隐藏或排除字段



我得到了查询中的所有属性,比如created_by、updated_by。。。

{
"client_ip": "Velit quo libero sun",
"verifier": "Voluptas ut sit sun",
"created_by": {
"id": 1,
"firstname": "admin",
"lastname": "admin",
"username": null
},
"updated_by": {
"id": 1,
"firstname": "admin",
"lastname": "admin",
"username": null
}}

有没有办法删除这些不需要的字段?

在模型和属性验证中可以做两件事

  1. 对属性使用private验证选项,不在默认端点中返回
"attributes": {
"title": {
"type": "string",
"private": true
}

查看文档。

  1. 您还可以禁用模型中的时间戳,使用:
{
"options": {
"timestamps": false
}
}

查看文档。

类似于第二种方法的东西,很快将可用于created_by&updated_by属性,这是自v3.1.x以来已知的问题。

您可以创建一个自定义控制器来减少负载大小或手动隐藏响应。

在控制器处理程序中,您可以使用delete运算符删除不需要的道具使用可选链接(?((Node.js版本14支持(

handlerName : async (ctx) => {
const results = await strapi.services?.["serviceName"]?.findOne() ?? {};
delete results?.created_by;
delete results?.updated_by;
ctx.send(results)
}

如果您不想显示这些属性,请在模型上执行此操作。。

"options": {
"privateAttributes": [
"createdAt",
"updatedAt",
"publishedAt",
"createdBy",
"updatedBy"
]

如果你不想显示你的列数据,那就这样做。

await strapi.entityService.findMany('modelNAme', {
fields:['fieldName'] }.

如果使用strapi>=4.0.0,您可以为模型的选项提供privateAttributes,以从管理面板和响应中排除字段。https://docs.strapi.io/developer-docs/latest/development/backend-customization/models.html#model-选项

最新更新