In our company we use discourse for everyday business.
Discourse is deeply integrated in our erp software.
For better organization of topics,our erp holds many kind of topics ids and posts ids.
In some parts of our app we want to show user list of specific topics in discource. (filtered by our citiera).
In our app there is form which users fills and our app has array of filtered topics.
Is there a way to send query string or formdata to discource endpoint among with array of wanted topics ids and to get list of topics in discource. (ideally with predefined order or ordered as array was)
Same needs we have for getting specific lists of posts by providing array of topics ids.
Мне тоже нужна эта функциональность. Сейчас я делаю это вот так, но это занимает слишком много времени.
const selectedTopics = this.selectedTopics
// Получаем темы по ID и возвращаем реальные объекты тем
this.selectedTopicsID.forEach(function(tid,index){
Topic.find(tid,{}).then(results => {
selectedTopics.pushObject(results)
})
});
Я собирался переоткрыть listcontroller в моем плагине (plugin.rb), добавить новый endpoint, а также переоткрыть topic-list в инициализаторе фронтенда и сделать что-то похожее на это:
import TopicList from 'discourse/models/topic-list';
const selectedTopics = this.selectedTopics
// Получаем темы по ID
TopicList.topics_array(this.selectedTopicsID).then(results => selectedTopics.pushObjects(results.topic_list.topics))
Пока что у этого подхода есть недостаток: он не возвращает «реальные» объекты Topic, но, думаю, добавление строки, подобной этой, исправит ситуацию:
Я всё ещё не уверен, что это правильный подход и/или не нарушает ли это безопасность.
Ещё один возможный вариант: сначала проверить в store, есть ли уже запись, и загрузить только то, чего нет, используя fromMap. Похоже на:
В любом случае, здесь становится слишком многословно
Вот моё окончательное решение, на этом я остановлюсь: