2016-06-22 6 views
0

So habe ich zur Zeit eine Publikation, die wie folgt aussieht:Meteor: Ändern von Daten bereits werden mit einem Verfahren veröffentlicht

Meteor.publish("publicRoomInfo", function (roomID) { 
    return Rooms.find({_id: roomID}, {fields: { 
     "peopleArr.name": 1, 
     "peopleArr.hasSubmitted": 1, 
    }}); 
}); 

Wie Sie mir nur zwei Felder in dem peopleArr Array veröffentlichen würde sehen:

name und hasSubmitted

Später jedoch möchte ich ein weiteres Feld userKey genannt zu dieser Publikation hinzufügen.

Also mein Ziel wäre für die Veröffentlichung wie folgt aussehen zu:

Meteor.publish("publicRoomInfo", function (roomID) { 
    return Rooms.find({_id: roomID}, {fields: { 
     "peopleArr.name": 1, 
     "peopleArr.hasSubmitted": 1, 
     "peopleArr.userKey": 1, 
    }}); 
}); 

Gibt es eine Möglichkeit, die Veröffentlichung in einem Verfahren ändern können? Derzeit, wenn ich versuche, erneut zu veröffentlichen, erhalte ich einen Fehler, der mir sagt, dass es sich um eine doppelte Veröffentlichung handelt, die ignoriert wurde.

Antwort

0

Sie können einen kleinen Trick wie diese versuchen:

Meteor.publish("publicRoomInfo", function (roomID, userKey) { 
    let fields = {} 
    fields["peopleArr.name"] = 1; 
    fields["peopleArr.hasSubmitted"] = 1; 

    //Checks whether userKey is set to true or false and adding it into fields object. 
    userKey ? fields["peopleArr.userKey"] = 1 : ''; 

    return Rooms.find({_id: roomID}, {fields: fields}); 
}); 

Hier können Sie sagen Meteor abonnieren, wenn Sie die USERKEY oder nicht einfachen Pass ein Argument von wahr oder falsch hinzufügen möchten. Obwohl ich empfehle Ihnen zu wissen, welche Felder Sie in erster Linie abholen möchten. und zusammenhalten.

Verwandte Themen