2016-11-25 5 views
0

Dieser Meteor-Code muss ein Dokument veröffentlichen, dessen Feld plateNum den vom Benutzer eingegebenen Übereinstimmungswert enthält.
Warum gibt es nichts zurück? Wie man es repariert?Meteor secure subscribe & publish

//server.publications.js

Meteor.publish('myCol', function (plate) { 
    if (this.userId && plate) { 
    return myCol.find({plateNum: plate}, {fields: {a: 1, b: 1, c: 1, engineSize: 1 }}); 
    } 
}); 

Die Werte der Felder ‚a‘, ‚b‘, ‚c‘ zum Zeitpunkt der Benutzeranforderung nicht bereit sein, wird aber durch berechnet werden ein Back-End-Arbeiter und aktualisieren sie die myCol

//client.main.js

Meteor.subscribe('myCol', dict.get('plateNum')); //<== stored info from user 

Template.footer.events({ 
    'click #info':() => { 
    searching = '<span class="note">Searching...</span>'; 
    let plate = document.getElementById('plateNum').value; 
    plate = plate.replace(/\W/g, '').toLowerCase().trim(); // 
    dict.set('plateNum', plate); //<=== store user info here 

    let doc = myCol.findOne({plateNum: plate}); 
    if (!doc || !doc.a) Meteor.call('aaa', plate); 
    if (doc && !doc.b) Meteor.call('bbb', {plateNum: plate},() => {}); 
    if (doc && doc.c && !doc.c) Meteor.call('ccc', {plateNum: plate},() => {}); 
    } 
}); 

Antwort

0

ich denke, es liegt daran, dass zu der Zeit sie Ihre Kundennummer der this.userIdmyCol abonniert ist null, daher wird nichts vom Server zurückgegeben.

Um dies zu beheben Sie den Benutzer sicher authentifiziert wurde vor subscribe

aktualisieren

Dies ist der Code, den Sie es machen müssen verwenden könnte zu beheben:

Template.footer.onCreated(function() { 
    // use this.autorun over Tracker.autorun 
    // so that the code below will be clear on onDestroy event 
    this.autorun(function() { 
    if(Meteor.userId()) { 
     Meteor.subscribe('myCol', dict.get('plateNum')); 
    } 
    }); 
}); 
+0

Und was Code-Vorschlag können Sie dies anbieten? –

+0

hey Ich habe gerade die Antwort aktualisiert, wenn es irgendwelche unklaren Dinge gibt, nur kommentieren und ich werde es erklären – Khang

Verwandte Themen