我正在使用 Contentful 来管理我正在开发的新网站上的内容,并且进展顺利。但是,我在尝试对项目进行排序时遇到了问题。我正在使用 NextJS14 和 Contentful 节点模块。我在 Contentful 中有一个模型,其中包含一个项目列表,其中一个字段名称是“mark”。我可以很好地加载数据,但如果我尝试通过标记字段感到疼痛,我会得到一个
这是我用来查询数据的代码:
await client.getEntries({
content_type: 'reportingMarks',
'fields.mark[match]': search,
order: 'sys.contentType.sys.id,fields.mark',
skip: skip,
limit: limit
}).then((response) => {
setMarks(response.items);
setTotalResults(response.total);
setIsPending(false);
}).catch((error) => {
console.error('Error:', error);
});
虽然这在我的本地计算机上有效,但当我尝试构建用于部署的项目时,我收到以下消息:
类型错误:类型“string”无法分配给类型“(OrderFilterPaths
|“sys.contentType.sys.id”|“-sys.contentType.sys.id”)[]'。
我花了两天时间寻找一种方法来完成这项工作,但我看到的帮助并不多。如果有人有任何想法,你可以拯救我的理智!
我已经阅读了 Contentful 文档,但这没有帮助。我找到的文档是这样说的:
为了按字段对结果进行排序,您需要将 order 指定为 where 选择器。请确保您只是查询 sys 中的字段,或者指定要查找的内容类型。
我的代码指定了 content_type。我也尝试过仅使用“fields.mark”来使用“order”。同样,这有效,但仍然会导致构建错误。
像往常一样,在发布问题后我有了突破。我更正后的代码是:
await client.getEntries({
content_type: 'reportingMarks',
'fields.mark[match]': search,
order: ['sys.contentType.sys.id', 'fields.mark'],
skip: skip,
limit: limit
这有效并通过了构建。