2016-03-25 2 views
0

Mit autopublish Paket veröffentlichen wird entfernt, während dieser Meteor-Code ausgeführt wird, eine andere Benutzer-ID hat sich auf zwei verschiedenen Browsern Konsolen Meteor.userId();
bestätigt aber, wenn eine Zeichenfolge eingegeben wird, in der input von einer von ihnen, und eine collection.insert ist fertig, die andere zeigt die gleiche Zeichenfolge.
Ich dachte, dass this.userId gut genug für den Server war, um nur die Dokumente zu veröffentlichen, die zu jedem der verschiedenen Clients gleichzeitig gehören.Verschiedene userId erhalten gleiche Dokument mit Server this.userId

Warum passiert das und wie wird es repariert? Dank

Server

Meteor.publish('displayCol', function() { 
    return DisplayCol.find({userId: this.userId}); 
}); 
DisplayCol.before.insert(function (userId, doc) { 
    doc.userId = userId; 
}); 

Kunde

Template.index.helpers({ 
    taskInputs: function() { 
    var ready = Meteor.subscribe('displayCol').ready(); 
    var data = DisplayCol.find({}); 
    return {items: data, ready: ready}; 
    } 
}); 

Antwort

0

Haben Sie autopublish noch installiert? Wenn ja, werden beide Clients automatisch alles bekommen. Entfernen Sie es mit 'meteor remove autopublish' Sie können auch die Bedingung {userId: Meteor.userId()} auf der Clientseite hinzufügen.

+0

Bedeutet das, dass die Verwendung von this.userId auf dem Server nutzlos ist? –

+0

Absolut nicht. Das Autopublish-Paket soll nur für das Rapid Prototyping verwendet werden, ohne sich um die Datensicherheit kümmern zu müssen. Es scheint, dass Sie diese Phase hinter sich haben, also ist es an der Zeit, sie aus Ihrem Projekt zu entfernen. –

Verwandte Themen