javascript - 如何从 Contentful 中获取单个条目并按字段值查询?

标签 javascript content-management-system axios contentful

我正在尝试根据条目的名称自定义字段检索单个条目。

我尝试过使用带有各种选项的 JS SDK:

client.getEntry("entryID")
    // .where("content_type", "Restaurant")
    // .where("fields.name[match]", "RestaurantName")
    // .all()
    .then(data => console.log('data', data))
    .catch(err => console.log('err', err))

但根据返回的错误,建议我只能使用 .getEntry 并传入条目 ID。

我还查看了使用 axios 发出 HTTP 请求,但遇到了类似的问题,即只能检索完整的条目列表或根据条目 ID 进行过滤。

我可以通过 `field.name === "Slug"或我添加的其他自定义字段获取吗?

最佳答案

目前使用 getEntry 获取条目的唯一方法是传入 sys.id 值。我们随时使用单个 Controller 向 Contentful 请求任何内容。这允许我们设置错误消息,将返回的数据转换为我们想要的格式等。我们向 Controller 添加了我们自己的 getEntry 辅助函数,可以由

contentfulController.getEntries({
   content_type: 'indexPage',
   'fields.slug[match]': slug,
   include: 3,
   locale: language,
});

然后在我们自己的 getEntry 函数中,我们获取数组中的第一个,并返回该对象,因为我们始终知道我们将返回一个。

但是请务必注意,如果您在 slug 中有子字符串,这可能会导致问题。假设您有两件带有 slug 的元素:

/resource
/resourcelisting

如果您查询 'fields.slug[match]': '/resource',它将在结果中返回这两个项目,因此您还应该检查哪一个具有您想要的实际 slug,而不是它的一部分。

关于javascript - 如何从 Contentful 中获取单个条目并按字段值查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275516/

相关文章:

email - 在 CrafterCMS 中,设置工作流程还需要什么?

javascript - 如何解析并连接特定分隔符

javascript - axios 相当于 curl --upload-file

javascript - 为什么我的 if-else 语句不起作用?

javascript - 如何向特定用户提供包含特定元素的index.html?

mysql - 为什么我无法在我的托管服务器上设置 October CMS?

java - Magnolia CMS 中的节点创建

node.js - Node 和reactjs axios服务器请求返回index.html文件而不是json

javascript - jQuery 在倒数第四行之前添加行

javascript - 如何查询 firebase 中文档 ID 的 map 对象?