2017-06-12 6 views
0

Wie fülle ich ein Dropdown-Feld mit Datensätzen/Dokumenten, die vom angemeldeten Benutzer erstellt wurden? Ich habe eine Sammlung, die viele Benutzer Schulen erstellen können. Ich möchte, dass wenn ein Benutzer mehr als eine Schule erstellt hat, das Drop-down mit der Anzahl der Schulen angezeigt wird. Wenn es nur eines ist, sollte das _id der Schule einfach in ein verstecktes Feld geleitet werden.Popup-Dropdown basierend auf den vom Benutzer erstellten Datensätzen

Dies ist die Schule Sammlung:

if (Meteor.isServer) { 
    Meteor.methods({ 
     SchoolRegister: function (newschoolname, newschoolmotto, newschholvision, sellschool, schooltype, 
      schoolfeerange, schoolcurriculum) { 
      if (!Meteor.userId()) { 
       throw new Meteor.Error('Not authorized', 'You must be logged in to add a new school!'); 
       return false; 
      }else{ 
       var regUsername = Meteor.user().username; 
       var year = new Date().getFullYear(); 
       var month = new Date().getMonth() + 1; 
       var day = new Date().getDate(); 
       var date = (month +"/" +day +"/" +year).toString(); 

    var schoolId = NewSchoolDB.insert({ 
        newschoolnamevar: newschoolname, 
        newschoolmottovar: newschoolmotto, 
        newschholvisionvar: newschholvision, 
        sellschoolvar: sellschool, 
        schooltypevar: schooltype, 
        schoolfeerangevar: schoolfeerange, 
        schoolcurriculumvar: schoolcurriculum, 
        createdAt: new Date(), 
        author: regUsername, 
        authorId: Meteor.userId() 

       }); 
        return schoolId; 
      } 
     }, 

     UserRecords: function() { 
      if (!Meteor.userId()) { 
       throw new Meteor.Error('Not authorized', 'You must be logged in to add a new school!'); 
       return false; 
      }else{ 
       //var UserDocuments = NewSchoolDB.find({authorId: Meteor.userId()}).count(); 
        return NewSchoolDB.find({authorId: Meteor.userId()}); 
      } 
     } 
    }); 
} 

Ich verwende diese die Methode aufzurufen:

Template.SchoolContactLayout.helpers({ 
    UsersDocuments: function() { 
     return Meteor.call('UserRecords'); 
     console.log(Meteor.call('UserRecords')); 
    } 
}); 

Dies ist die Template-Datei

{{# if UsersDocuments == 1 }} 
       <input type="hidden" name="schoolId" value="{{ UsersDocuments._id }}"> 
      {{else}} 
       <div class="form-group"> 
        <select class="form-control" name="schoolnames" id="schoolnames" required style="color: black; width: 100%; font-family: 'candara'"> 
         <option value="{{UsersDocuments._id}}">{{UsersDocuments.newschoolnamevar}}</option> 
        </select> 
       </div> 
      {{/if}} 

Alles in allem, Es wurde kein Fehler zurückgegeben und es hat nicht funktioniert. Bitte, Experten, bitte helfen.

Antwort

0

Meteor.call ('UserRecords') ist Async-Funktion müssen Sie in einem Callback darauf warten und stattdessen Sitzung verwenden.

Meteor.call('UserRecords', function(err,res){ 
// res will be your return value you can set your session here 
}); 

oder können Sie Paket beispielsweise verwenden Sie Atmosphäre für reaktive Methode suchen

Verwandte Themen