[strapi]如果草稿实体与发布实体相关,则它们可用

2024-05-13 695 views
2
所需的系统信息

Node.js 版本:16.13.1 NPM 版本:9.4.0 Strapi 版本:4.8.2 数据库:Postgres 操作系统:MacOS 您的项目是 Javascript 还是 Typescript:JavaScript

描述错误

如果草稿实体与发布实体相关,则它们可用

重现行为的步骤
  1. 创建草稿实体 (content_1)
  2. 与发布实体相关(content_2 有许多 content_1)
  3. 检查 content_2 API 响应
  4. API 返回草稿实体 截图 2023-03-23 15 34 55 截图 2023-03-23 15 34 32
预期行为

不应返回草稿实体

回答

7

我认为我们有同样的问题,我们正在使用本地化,在更新到版本 4.8.2 之前,我们可以使用 PublicationState : PREVIEW并仍然获得草稿中的连接本地化:

{
  jobs(
    publicationState: PREVIEW
  ) {
    data {
      id
      attributes {
        title
        localizations {
          data {
            id
            attributes {
              locale
            }
          }
        }
      }
    }
  }
}

但现在我们甚至需要在本地化属性上指定publicationState: PREVIEW来获取草稿:

{
  jobs(
    publicationState: PREVIEW
  ) {
    data {
      id
      attributes {
        title
        localizations(publicationState: PREVIEW) {
          data {
            id
            attributes {
              locale
            }
          }
        }
      }
    }
  }
}

不幸的是,这破坏了我们的网络,因为我们提供了在发布之前预览所有内容的可能性。

5

嗯,非常有趣的问题。让我在源代码中找到问题,我会回复你:)

9

你好@wai15985!我正在尝试重现您的问题,但没有成功

我有一本与标签相关的书。

当我使用列出书籍时,/api/books?publicationState=LIVE我会看到已出版的书籍,但其中任何一本都显示任何草稿关系。

我确实看到这些草案关系使用了/api/books?publicationState=PREVIEW.

您能否指定更多内容类型和查询?您是否使用发布状态查询参数?

1

这是一条模板消息

你好@wai15985,

感谢您报告此错误,但是根据我们现有的信息,我们无法重现您所描述的问题。您能否创建一个能够在其中重现该问题的新项目,提供重现此问题的明确步骤,并将此新项目上传到新的 GitHub 存储库,或者将其压缩为.zip并上传到此问题?

我们非常感谢您对此的帮助,通过在一个新项目中工作,它将消除任何可能不相关的变量。请注意,status: can not reproduce如果没有任何活动,标记为 的问题将在 14 天内关闭。

谢谢你!

9

@Marc-Roig,谢谢您的回复!

publicationState: PREVIEW由于这是一种无意的行为,因此我看到了每个子关系的实际设置的胜利,因为这提供了更容易理解的查询。

最好有一个选项,设置顶层publicationState: PREVIEW,它会影响所有子关系,当您有包含许多子关系的大型查询时,您会知道所有内容都应该处于预览状态。

2

@perostlin 这确实是一个很好的补充,我会将其带入我们关于 graphql 的下一次讨论!

6

一样的问题

5

你好!

由于我们在过去 14 天内没有收到任何新的或更新的信息来重现此问题,因此我们将此问题标记为已关闭。如果您有新信息,请随时回复,我们将考虑重新开放。

如果其他人有此问题的更新信息,请打开一个新的错误报告并简单地引用此已关闭的错误报告,以便我们可以获得您可能拥有的任何新信息。如果您有疑问,请参阅有关开放问题的贡献者指南。

谢谢您,祝您有美好的一天!

5

嗨@Marc-Roig,有这方面的更新吗?谢谢!

4

嗨@Marc-Roig,有这方面的更新吗?谢谢!

第15682章(评论)

我明白了,但这似乎对关系不起作用oneToOne?我想这违背了查询的整个逻辑,findOne但如果可以支持的话那就太好了。就我而言,我需要一个oneToOne关系,并且仍然需要在草稿模式下将其过滤掉。

对此有什么想法吗?

2

由于升级过程而提高严重程度

3

(我认为 REST 和 GraphQL 应该以类似的方式运行,因此我重用这个问题而不是提出新问题)

1

@derrickmehaffy 我们有计划解决这个问题吗?前几天我们还发现了其他案例,不知道之前是否有人提出过:

这是建模:

  1. 单一类型:主页
  2. 集合类型:工具箱、链接
  3. 关系:主页与 Toolbox 为 1:m 关系,Toolbox 与 Link 为 1:1 关系 图像

我们在使用 GRAPH 进行“PREVIEW”时发现的问题:

  1. PUBLISHED主页+ PUBLISHED工具箱+ PUBLISHED链接:可以获取所有数据
  2. PUBLISHED主页+ PUBLISHED工具箱+ DRAFT链接:可以获取所有数据
  3. 已发布的主页 + DRAFT工具箱 +已发布的链接:无法通过链接获取工具箱
  4. 已发布主页 + DRAFT工具箱 + DRAFT链接:无法获取工具箱和链接
0

最终是的,目前团队正在处理其他优先事项。