2017-10-18 6 views
0

J'essaie de publier une collection et j'aimerais l'ajouter dans un champ qui n'existe pas dans la collection. Je pourrais être loin de la piste ici, mais je pensais que je pourrais utiliser this.added() pour ajouter des champs à la collection publiée. Quelqu'un peut-il s'il vous plaît me montrer ce que je fais malComment utiliser correctement 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; 
}); 
+0

Est-ce sur la bonne voie https://stackoverflow.com/questions/39175965/using-this-added-in- météore – Mikkel

+0

Oui, j'ai essayé d'implémenter ça plus tôt sans aucune chance. Je ne suis pas sûr pourquoi? @Mikkel – bp123

Répondre

1

Si vous souhaitez modifier des documents dans la publication, vous devez utiliser Cursor.observe() ou Cursor.observeChanges().

Le modèle le plus courant en est (avec la modification dont vous avez besoin):

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(); 
    }); 
}); 
+0

J'ai besoin de passer par cette étape par étape pour comprendre comment cela fonctionne mais il le fait. Merci d'avoir posté! – bp123

+0

Une question. Cela fonctionne, cependant, dans le code, vous ne retournez rien. Pouvez-vous nous éclairer sur la façon dont cela fonctionne? – bp123