Как правильно использовать this.added

Я пытаюсь опубликовать коллекцию, и я хотел бы добавить в поле, которое не существует в коллекции. Я мог бы быть далеко от пути, но я думал, что мог бы использовать this.added() добавить поля в опубликованную коллекцию. Может кто-нибудь, пожалуйста, покажите мне, что я делаю не так

Meteor.publish('job.view-open-to-candidate', function(jobCollectionId) {
  const job = Jobs.find({ _id: jobCollectionId }, {
    fields: {
      candidateApplication: 0
    }
  });

  this.added('job', jobCollectionId, {testNewField: 'test'})

  return job;
});

1 ответ

Решение

Если вы хотите изменить документы в публикации, вы должны использовать Cursor.observe() или же Cursor.observeChanges(),

Наиболее распространенный шаблон для этого (с модификацией вам нужно):

Meteor.publish('job.view-open-to-candidate', function(jobCollectionId) {
  const publication = this;

  const handle = Jobs.find({ _id: jobCollectionId }, {
    fields: {
      candidateApplication: 0
    }
  }).observeChanges({
    added(_id, fields) {
      const newFields = fields;
      newFields.testNewField = 'test';
      publication.added('jobs', _id, newFields);
    },

    changed(_id, fields) {
      const newFields = fields;
      newFields.testNewField = 'test';
      publication.changed('jobs', _id, newFields);
    },

    removed(_id) {
      publication.removed('jobs', _id);
    },
  });

  this.ready();

  this.onStop(() => {
    handle.stop();
  });
});
Другие вопросы по тегам