开发者问题收集

媒体字段未显示在 strapi v4 的 api 响应中

2021-12-18
8901

我的 strapi (v4) 服务器集合中有一个名为 Picture 的媒体字段,但是当我请求 localhost:1337/api/products 时,它并没有出现在 api 响应中。

3个回答

解决了,耶!

Strapi v4 的文档说:

Relations population

By default, relations are not populated when fetching entries.

Queries can accept a populate parameter to explicitly define which fields to populate, with the following syntax:

GET /api/books?populate=*

所以我只需在 GET 请求后加上 ?populate=*

答案: localhost:1337/api/products?populate=*

Ammar Uppal
2021-12-18

阅读 Strapi 文档 - 此处 后,发现您可以直接填充媒体字段 -

const qs = require('qs');
const query = qs.stringify({
  populate: [
    'seoData',
    'seoData.sharedImage',
    'seoData.sharedImage.media',
  ],
}, {
  encodeValuesOnly: true,
});

await request(`/api/articles?${query}`);

而不是填充所有(通过 *),这不是一个好的做法,因为

  1. 数据分类 - 在大多数情况下,您不需要返回整个有效负载,例如集合发布时等。
  2. 性能 - 当您仅选择必要的内容时,对数据库的查询将更小,因此结果将更快。
  3. 减少有效负载 - 当您仅选择必要的内容时,您可以减少返回给客户端的有效负载。
Avi Siboni
2022-06-12

最后写入,populate=picture(媒体字段的名称)

Kushal Gurung
2022-05-31