Как правильно использовать 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();
});
});