Meteorjs: ลบปฏิกิริยาต่อคำสั่งเผยแพร่บางรายการ

มีวิธีใดบ้างในการเผยแพร่เมื่อมีการร้องขอการสมัครแล้วหยุดผลักดันการเปลี่ยนแปลงที่ทำกับคอลเลกชันจนกว่าลูกค้าจะสมัครอีกครั้ง

ฉันมีสถานการณ์นี้:

เซิร์ฟเวอร์:

Meteor.publish("posts", function () {
    return Messages.find(); //Do not push changes to this collection!
});

ลูกค้า:

Meteor.subscribe("posts");

person em.rexhepi    schedule 23.12.2014    source แหล่งที่มา
comment
เมื่อคุณพูดว่าเผยแพร่อัตโนมัติ ดูเหมือนว่าคุณไม่ได้หมายถึงแพ็คเกจ แต่หมายถึงปฏิกิริยาและการซิงโครไนซ์ข้อมูล ฉันถูกไหม?   -  person Kyll    schedule 23.12.2014
comment
@Kyll ใช่ขอโทษสำหรับคำอธิบายที่ไม่ดีของฉัน ใช่ ฉันต้องการให้ข้อมูลไม่เกิดปฏิกิริยา   -  person em.rexhepi    schedule 23.12.2014
comment
ฉันพร้อมที่จะตอบแล้ว แค่คำถามสั้นๆ: วิธีการจะได้ผลหรือไม่ กำลังส่งอาร์เรย์ของโพสต์ทั้งหมดไปยังไคลเอนต์หรือไม่   -  person Kyll    schedule 23.12.2014
comment
@Kyll ถ้าฉันต้องทำกลอุบายฉันก็จะทำ แต่ฉันไม่ต้องการเรนเดอร์เทมเพลตเปลวไฟด้วยตนเอง สิ่งที่ฉันต้องการคือการเผยแพร่คำสั่งนี้ที่จะไม่อัปเดตไคลเอนต์อย่างมีปฏิกิริยาและไม่ยุติฟังก์ชันการเผยแพร่ (ฉันคิดว่าถ้าฉันยุติฟังก์ชันฉันจะเพิ่มเวลารอให้กับผู้ใช้จนกว่ามันจะเริ่มต้นใหม่อีกครั้งถ้าฉันจำไม่ผิด ).   -  person em.rexhepi    schedule 23.12.2014
comment
เทมเพลตสามารถแสดงผลได้เหมือนกันทั้งหมดด้วยอาร์เรย์ข้อมูลแทนที่จะเป็นเคอร์เซอร์ใช่ไหม หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ เราจะต้องดูข้อมูลดังกล่าว   -  person Kyll    schedule 23.12.2014
comment
ฉันไม่เข้าใจจริงๆ คุณช่วยอธิบายให้ชัดเจนกว่านี้ได้ไหมว่าคุณกำลังแนะนำอะไร ขออภัยในความเป็นผู้สูงศักดิ์   -  person em.rexhepi    schedule 23.12.2014


คำตอบ (1)


หากคุณเพียงแค่ต้องส่งข้อมูลแบบครั้งเดียวไปยังไคลเอนต์ การใช้วิธีการอาจได้ผล:

//Server
Meteor.methods({
  getSomePosts : function(limit)
  {
    check(limit, Number);
    return Posts.find({}, {limit : limit}).fetch();
  }
});

//Client
Meteor.call('getAllPosts', function(err, result) {
  //Do stuff with the result
});

โปรดทราบว่าการดำเนินการนี้จะมีน้ำหนักมากในฐานข้อมูลของคุณ คุณอาจต้องการใช้ตัวแปรและอัปเดตเป็นระยะ แทนที่จะดึงข้อมูลคอลเลกชันทั้งหมดทุกครั้งที่ไคลเอ็นต์เรียกใช้เมธอด

ข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดในเอกสาร!

person Kyll    schedule 23.12.2014
comment
ขอบคุณสำหรับตัวอย่างวิธีครับ และขอบคุณที่แนะนำครับว่าไม่ควรส่งกระทู้ทั้งหมดผมทำตัวอย่างให้ไม่ซับซ้อน มีวิธีใดบ้างที่จะจำกัด Meteor.publish() ให้ส่งคืนเคอร์เซอร์เมื่อ Meteor.subscribe() เรียกการ publish เพียงเพื่อลบปฏิกิริยาออก (ถ้าไม่ผมจะไปตามวิธี) - person em.rexhepi; 23.12.2014
comment
แน่นอน ให้ฉันแก้ไขคำตอบ คุณสามารถใช้ขีดจำกัดกับเคอร์เซอร์ได้ - person Kyll; 23.12.2014
comment
ขอบคุณสำหรับข้อความค้นหา Mongo ฉันรู้ว่าฉันสามารถเพิ่มสิ่งที่ฉันต้องการลงในข้อความค้นหาได้ คำตอบใด ๆ ฉันจะลบปฏิกิริยาใน Meteor.publish() ยกเว้นวิธี Meteor.methods() ได้อย่างไร - person em.rexhepi; 23.12.2014
comment
คุณจะต้องปรับแต่งการประกาศคอลเลกชันและการเผยแพร่ในลักษณะที่น่าเกลียดทีเดียว ตรวจสอบ Meteor.Collection ในเอกสาร - person Kyll; 23.12.2014