如何从内容CDA响应中删除sys对象?

时间:2018-08-13 20:58:18

标签: javascript json angular typescript contentful

如何从Content Delivery API响应的getEntries方法中删除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);

1 个答案:

答案 0 :(得分:0)

Heyooo。

由于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的原因,因为它是链接解析所必需的。