2015-08-23 2 views
0

У меня есть коллекция, в которой currentUser вставляет свои данные.Как изменить результат поиска с использованием атрибута currentUser в Meteor

Template.details.events({ 

    'submit form': function(event) { 
    event.preventDefault(); 

    var currentUser = Meteor.userId(); 
    var name = event.target.nam.value; 
    var age = event.target.nombor.value; 
    var gender = event.target.sex.value; 

     Data.insert({ 
     name : name, 
     age: age, 
     gender: gender, 
     createdBy: currentUser 

    }); 
}   

});

Теперь я хочу показать currentUser список людей, противоположных его полу. Как мне это сделать? Я использую помощника ниже прямо сейчас, но это возвращает только самцов. И когда я меняю селектор на «женский», он возвращает женщину.

Template.dashBoard.helpers({  
     genderIs: function(gender){ 
      return this.gender === gender; 
     }, 
     'people': function(){ 
      return Data.find({gender: "male"}); 
     } 
    }); 

Я пробовал несколько способов, но из-за моей неопытности никто из них не работает. вот HTML

<ul> 
     {{#each people}}      
     <li> <a href="#"> {{name}} {{age}} {{gender}} </a> </li> 
     {{/each}} 
    </ul> 

Я пробовал что-то подобное, но это не сработало.

{{#if genderIs "female"}} 
      {{#each people "male"}} 
       <li> <a href="#"> 
         {{name}} {{age}} {{gender}}  
        </a> 
       </li>   
      {{/each}} 

       {{else}} 

      {{#each people "female"}} 
      <li> <a href="#"> 
        {{name}} {{age}} {{gender}}  
       </a> 
      </li> 
      {{/each}} 

    {{/if}} 
+2

Вы, вероятно, не хотите, чтобы добавление пользовательская информация в отдельную коллекцию под названием «Данные». Просто добавьте имя, возраст и пол в свойство 'profile' объекта пользователя и все, что будет просто храниться в коллекции пользователей Meteor. http://docs.meteor.com/#/full/meteor_users Затем вы можете сделать что-то вроде «Meteor.user(). profile.gender', чтобы вернуть пол текущего пользователя. – fuzzybabybunny

ответ

1

Как говорится в комментарии, вы можете сохранить всю информацию пользователя в поле «Профиль». Так шаблон ваших «Детали» должен измениться:

Template.details.events({ 
    'submit form': function(event) { 
    event.preventDefault(); 

    var currentUser = Meteor.userId(); 
    var name = event.target.nam.value; 
    var age = event.target.nombor.value; 
    var gender = event.target.sex.value; 

    Meteor.users.update({ // using update method to update user information 
     _id: currentUser 
    }, 
    { 
     $set:{ 
     "profile.name": name, 
     "profile.age": age, 
     "profile.gender": gender 
     } 
    }); 
}); 

Затем измените ваши приборную панель помощников:

Template.dashBoard.helpers({  
    genderIs: function(gender){ 
     return Meteor.user().profile.gender === gender; 
    }, // you may not need this function in your app 
    'people': function(){ 
     var gender = Meteor.user().profile.gender === "male" ? "female" : "male" 
     return Data.find({gender: gender}); 
    } 
}); 

Но вы должны обратить внимание здесь, если вы не установите в поле " profile.gender ", это было бы undefined и всегда возвращать" мужчина ".

В конце концов, вы могли бы с помощью возвращения данных по dashboard.helpers легко:

{{#each people}} 
    <li><a href="#"> {{profile.name}} {{profile.age}} {{profile.gender}} </a></li> 
{{/each}} 

Я хочу это может решить вашу проблему совершенно :-)

+0

@Kaiyes Он равен 'if Meteor.user(). Profile.gender ===" male "gender =" female "else gender =" male "' –

+0

Cheers !!! благодаря тонну!! – Kaiyes

+0

- это кофейник? – Kaiyes