簡體   English   中英

有內容的 .NET SDK 查詢失敗

[英]Contentful .NET SDK Query Failures

2020 年7 月 9 日更新 1:至少有兩個問題。 抱歉,我無法讓編輯器正確格式化文本。

  1. 字段名稱需要有一個字段。 字首。

    QueryBuilder queryBuilder = QueryBuilder.New.FieldExists("fields.myurl", true).FieldEquals("fields.myurl", "/");

  2. 似乎有必要迭代內容類型。

    https://cdn.contentful.com/spaces/qjiunow8a0ig/entries?fields.myurl[exists]=true&fields.myurl=%2F

    未處理的異常。 Contentful.Core.Errors.ContentfulException:需要內容類型 ID。 在查詢條目和涉及字段時,您需要將查詢限制為特定的內容類型。 請在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142 中的 Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) 處發送內容類型 ID(不是名稱)作為 URI 查詢參數“content_type” Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage 響應) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs: 第 320 行 Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage request, CancellationToken cancelToken) 在 Z0D61F8370CAD1\43E221 deliverystack\Contentful.Core\ContentfulClientBase.cs:第 264 行,位於 Contentful.Core.ContentfulClientBase.SendHttpRequest(字符串 url,HttpMethod 方法,字符串 authToken,CancellationToken cancelToken,HttpContent 內容,可空1 version, String contentTypeId, String organisationId, List 1 個附加標題 rs) 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 :C 中 Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancelToken) 的第 654 行:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:Contentful.Core.ContentfulClient.GetEntries[T] 的第 188 行(QueryBuilder`1 queryBuilder, CancellationToken cancelToken) 在 C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171 at cfclt.Program.Main(String[] args) 在 C:\deliverstack .cs:第 33 行

所以這有效:

QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("fields.url", true).FieldEquals("fields.url", "/");

我想我會迭代內容類型並創建要查詢的線程。

原帖:

I would like to use the Contentful .NET SDK ( https://www.contentful.com/developers/docs/net/ ) to implement the content delivery tier for a web application.

我的第一個問題是如何 map 傳入 HTTP 請求到 Contentful 中的條目,而不在內容交付層中存儲任何相關配置。 我想通過 URL 並讓 SDK 返回適當類型的水合 object。

我在應該有 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 條目。 我究竟做錯了什么?

為什么/如何使用無頭 CMS 做如此基本的事情如此困難? 看到這個; 這就像一個我沒有時間探索的兔子洞。

https://www.contentfulcommunity.com/t/how-to-query-on-multiple-content-types/473/10

如果需要,我不介意迭代內容類型,但是如果查詢無論如何都不起作用,我不確定是否值得付出努力?

您需要指定要過濾的字段的完整路徑。 所以.FieldExists("fields.url", true).FieldEquals("fields.url", "/")應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM