内容丰富的 .NET SDK 查询失败
Contentful .NET SDK Query Failures
更新 1 9.July.2020: 至少两个问题。抱歉,我无法让编辑器正确格式化文本。
字段名称需要有一个字段。前缀。
QueryBuilder queryBuilder = QueryBuilder.New.FieldExists("fields.myurl", true).FieldEquals("fields.myurl", "/");
似乎有必要迭代内容类型。
https://cdn.contentful.com/spaces/qjiunow8a0ig/entries?fields.myurl[exists]=true&fields.myurl=%2F
未处理的异常。 Contentful.Core.Errors.ContentfulException:需要内容类型 ID。在查询条目和涉及字段时,您需要将查询限制为特定的内容类型。请发送内容类型 ID(不是名称)作为 URI 查询参数“content_type”
在 Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142
在 Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage 响应)在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 320
在 Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage 请求,CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 264
在 Contentful.Core.ContentfulClientBase.SendHttpRequest(字符串 url,HttpMethod 方法,字符串 authToken,CancellationToken cancellationToken,HttpContent 内容,Nullable1 version, String contentTypeId, String organisationId, List
1 additionalHeaders)在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase。 CS:第257行
在 Contentful.Core.ContentfulClient.Get(String url, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 654
在 Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 188
在 Contentful.Core.ContentfulClient.GetEntries[T](QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171
在 cfclt.Program.Main(String[] args) 在 C:\temp\deliverystack\cfclt\Program.cs:line 33
所以这可行:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("fields.url", true).FieldEquals("fields.url", "/");
我想我会迭代内容类型并创建线程来查询。
原帖:
我想使用 Contentful .NET SDK (https://www.contentful.com/developers/docs/net/) 来实现 Web 应用程序的内容交付层。
我的第一个问题是如何将传入的 HTTP 请求映射到 Contentful 中的条目,而不在内容交付层中存储任何相关配置。我想传递一个 URL 并让 SDK return 一个适当类型的水合对象。
我在应该有 URL 的条目中放置了一个名为 URL 的文本字段。我想查询所有内容类型以查找在该 URL 字段中具有特定值的任何条目。
我尝试了一些查询,但总是出现异常:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("url", true).FieldEquals("url", "/");
ContentfulCollection<Entry> entries = client.GetEntries(queryBuilder).GetAwaiter().GetResult();
Unhandled exception. Contentful.Core.Errors.ContentfulException: The query you sent was invalid. Probably a filter or ordering specification is not applicable to the type of a field.[
{
"name": "unknown",
"path": [
"url"
],
"details": "The path \"url\" is not recognized"
}
]
at Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142
at Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage response) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 320
at Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 264
at Contentful.Core.ContentfulClientBase.SendHttpRequest(String url, HttpMethod method, String authToken, CancellationToken cancellationToken, HttpContent content, Nullable`1 version, String contentTypeId, String organisationId, List`1 additionalHeaders) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 257
at Contentful.Core.ContentfulClient.Get(String url, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 654
at Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 188
at Contentful.Core.ContentfulClient.GetEntries[T](QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171
我比较确定在其 URL 字段中有一个值为 / 的 firstContentType 条目。我做错了什么?
Why/how 使用无头 CMS 做如此基本的事情会这么难吗?看到这个;这就像一个我没有时间探索的兔子洞。
https://www.contentfulcommunity.com/t/how-to-query-on-multiple-content-types/473/10
如果需要,我不介意迭代内容类型,但我不确定如果查询无论如何都不起作用,这样做是否值得?
您需要指定要过滤的字段的完整路径。所以 .FieldExists("fields.url", true).FieldEquals("fields.url", "/")
应该可以解决问题。
更新 1 9.July.2020: 至少两个问题。抱歉,我无法让编辑器正确格式化文本。
字段名称需要有一个字段。前缀。
QueryBuilder queryBuilder = QueryBuilder.New.FieldExists("fields.myurl", true).FieldEquals("fields.myurl", "/");
似乎有必要迭代内容类型。
https://cdn.contentful.com/spaces/qjiunow8a0ig/entries?fields.myurl[exists]=true&fields.myurl=%2F
未处理的异常。 Contentful.Core.Errors.ContentfulException:需要内容类型 ID。在查询条目和涉及字段时,您需要将查询限制为特定的内容类型。请发送内容类型 ID(不是名称)作为 URI 查询参数“content_type” 在 Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142 在 Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage 响应)在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 320 在 Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage 请求,CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 264 在 Contentful.Core.ContentfulClientBase.SendHttpRequest(字符串 url,HttpMethod 方法,字符串 authToken,CancellationToken cancellationToken,HttpContent 内容,Nullable
1 version, String contentTypeId, String organisationId, List
1 additionalHeaders)在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase。 CS:第257行 在 Contentful.Core.ContentfulClient.Get(String url, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 654 在 Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 188 在 Contentful.Core.ContentfulClient.GetEntries[T](QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171 在 cfclt.Program.Main(String[] args) 在 C:\temp\deliverystack\cfclt\Program.cs:line 33
所以这可行:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("fields.url", true).FieldEquals("fields.url", "/");
我想我会迭代内容类型并创建线程来查询。
原帖:
我想使用 Contentful .NET SDK (https://www.contentful.com/developers/docs/net/) 来实现 Web 应用程序的内容交付层。
我的第一个问题是如何将传入的 HTTP 请求映射到 Contentful 中的条目,而不在内容交付层中存储任何相关配置。我想传递一个 URL 并让 SDK return 一个适当类型的水合对象。
我在应该有 URL 的条目中放置了一个名为 URL 的文本字段。我想查询所有内容类型以查找在该 URL 字段中具有特定值的任何条目。
我尝试了一些查询,但总是出现异常:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("url", true).FieldEquals("url", "/");
ContentfulCollection<Entry> entries = client.GetEntries(queryBuilder).GetAwaiter().GetResult();
Unhandled exception. Contentful.Core.Errors.ContentfulException: The query you sent was invalid. Probably a filter or ordering specification is not applicable to the type of a field.[
{
"name": "unknown",
"path": [
"url"
],
"details": "The path \"url\" is not recognized"
}
]
at Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142
at Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage response) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 320
at Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 264
at Contentful.Core.ContentfulClientBase.SendHttpRequest(String url, HttpMethod method, String authToken, CancellationToken cancellationToken, HttpContent content, Nullable`1 version, String contentTypeId, String organisationId, List`1 additionalHeaders) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 257
at Contentful.Core.ContentfulClient.Get(String url, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 654
at Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 188
at Contentful.Core.ContentfulClient.GetEntries[T](QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171
我比较确定在其 URL 字段中有一个值为 / 的 firstContentType 条目。我做错了什么?
Why/how 使用无头 CMS 做如此基本的事情会这么难吗?看到这个;这就像一个我没有时间探索的兔子洞。
https://www.contentfulcommunity.com/t/how-to-query-on-multiple-content-types/473/10
如果需要,我不介意迭代内容类型,但我不确定如果查询无论如何都不起作用,这样做是否值得?
您需要指定要过滤的字段的完整路径。所以 .FieldExists("fields.url", true).FieldEquals("fields.url", "/")
应该可以解决问题。