如何从getEntries方法的Content Delivery API响应中删除sys对象?我试图使用select搜索参数进行查询,但它不会删除sys对象。

getProducts(query?: object): Promise<Entry<any>[]> {
    return this.cdaClient.getEntries(Object.assign({
      content_type: 'product',
      select: 'fields',
      include: 1
    }, query))
      .then(res => res.items);

最佳答案



由于the way how Contentful's linking mechanism work,集合端点的JSON响应包括两个主要部分– itemsincludes

{
    "items": [
    {
      "sys": {
        "type": "Entry",
        "id": "4rJn9OJsBiAKmeoiiw40Ko",
      },
      "fields": {
        "name": "Menu for Humans",
        "stickiness": 999.3,
        "menuMeal": [
          {
            "sys": {
              "type": "Link",
              "linkType": "Entry",
              "id": "3HkMtbj6hqcMYEqWIOm6SQ"
            }
          }
        ]
      }
    },
  ],
  "includes": {
    "Entry": [
      {
        "sys": {
          "id": "3HkMtbj6hqcMYEqWIOm6SQ",
          "type": "Entry",
          ...
        },
        "fields": {...}
      },
      ...
    }
  ]
}


items中的条目引用includes对象中的其他项目。提供的SDK可以为您解决这些难题,因此无论响应结构如何,您都可以递归地访问树下的字段(例如entry.fields.anotherEntry.fields)。

这就是为什么you unfortunately can't omit the sys property in the JS sdk的原因,因为它是链接解析所必需的。

关于javascript - 如何从内容CDA响应中删除sys对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51830456/

10-10 21:19