我正在尝试根据条目的名称自定义字段检索单个条目。
我尝试过使用带有各种选项的 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/