أحتاج أيضًا إلى هذه الوظيفة. حاليًا أقوم بذلك بهذه الطريقة، لكنها تستغرق وقتًا طويلاً جدًا.
const selectedTopics = this.selectedTopics
//eat topics as ids and let out real topics
this.selectedTopicsID.forEach(function(tid,index){
Topic.find(tid,{}).then(results => {
selectedTopics.pushObject(results)
})
});
كنت على وشك إعادة فتح listcontroller في ملف plugin.rb الخاص بي وإضافة نقطة نهاية جديدة، وإعادة فتح topic-list في مُهيئ الواجهة الأمامية، وفعل شيء مشابه لهذا:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/models/topic-list.js.es6#L129
لكن يجب أن يكون هناك طريقة أسهل للقيام بذلك. هل حقًا لا توجد نقطة نهاية لجلب المواضيع دفعة واحدة حسب المعرف (ID)؟
سأكون ممتنًا جدًا لأي مساعدة ![]()
تعديل: هكذا حللت هذه المشكلة بنفسي:
وهكذا يمكن استخدامها.
import TopicList from 'discourse/models/topic-list';
const selectedTopics = this.selectedTopics
//eat topics as ids
TopicList.topics_array(this.selectedTopicsID).then(results => selectedTopics.pushObjects(results.topic_list.topics))
حاليًا، لا تزال هناك عيب، ألا وهو أنها لا تُرجع كائنات “Topic” حقيقية، لكنني أظن أن إضافة سطر مثل هذا سيحل المشكلة:
لا تزال غير متأكد مما إذا كانت هذه هي الطريقة الصحيحة للقيام بذلك و/أو ما إذا كانت هذه الطريقة تُخل بالأمان.
هناك شيء آخر يمكن فعله: البحث أولاً في المخزن (store) عما إذا كانت السجلات موجودة بالفعل، ثم تحميل ما هو غير موجود فقط باستخدام fromMap. مشابه لـ:
على أي حال، أصبح هذا النص طويلاً جدًا هنا ![]()
هذا هو الحل النهائي الخاص بي، سأعلن إنهاء العمل الآن: