如何以编程方式检索主题的external_id

非常感谢,各位!

因此,我希望运行多个 Discourse 实例,以及一个在后台运行的总体(非 Discourse)管理/协调系统。主题将通过以下两种方式之一添加到 Discourse 中 - 要么由用户通过常规的 Discourse 主题创建机制添加,要么由管理/协调系统通过 API 添加。

通过 API 创建主题的地方,它通常代表一个任务或类似的流程项,该项将已经拥有自己的非 Discourse ID…我们称之为“外部 ID”。

当主题由用户在 Discourse 中创建时,我们将使用 Webhook 触发一个 Azure 函数,在中央系统中创建一个存根状的克隆(以便 Discourse 消息能够连接到更广泛的内容流、任务等)。因此,同样,Discourse 主题间接会有一个唯一的“外部 ID”——我们建议通过 API 更新主题。

我们有一个定制的 Discourse 主题组件,当每个主题加载时,它将使用 Ajax 从中央系统检索非 Discourse 中心信息,并将其显示在主题屏幕上。

虽然我们可以使用 Discourse 主题 ID 来参数化 Ajax 调用并查找匹配的数据,但使用“外部 ID”进行此操作更有效(这更简洁,有多种原因——它避免了查找等)。

我们可以轻松地将“外部 ID”存储在自定义字段中——我们已经有一个用于其他数据——但我们注意到 Topics API 有一个“external_id”字段,它看起来正是我们需要的,并且我更愿意出于各种原因使用它……它只是让这个有些关键的字段更容易包含在报告、导出、未来的搜索等中。

请参阅 Discourse API Docs 的屏幕截图

我猜这是一个相当新的字段——论坛上的大多数建议似乎都与用户 external_id 字段有关,而这正是我现在需要的。如上所述,我正在检索主题的 Ember 模型(在我自定义的主题组件中),并且可以通过它获取关于主题的几乎所有信息……但无法获取 external_id 字段。

(如上所述——我正在使用这段代码获取主题,这段代码是从本网站的某个地方借来的,目前不知道是哪里:

            const topicController = api.container.lookup("controller:topic");
            if (topicController) {
                const thisTopic = topicController.get("model");      

所以,请求是——特定于主题的 external_id 字段是否隐藏在模型(“thisTopic”)的某个地方,或者我是否误解了这些概念,应该直接使用自定义字段来存储这个外部 ID(我知道我可以让这种方法奏效,并且知道如何做!……我只是更喜欢使用独立的 external_id 的简洁性和未来可扩展性,如果它确实可用的话)。

再次感谢您的帮助,我非常感激!