2016-01-08 2 views
1

Я работаю над приложением в Meteor, назовем его встречами. Я уже делал базовый crud, и теперь меня задерживают действие запроса, когда пользователь отправляет запрос для приглашения на встречу (я использую пакет accounts-password для обработки auth, если это что-то означает). Я хочу показать владельцу встречи, что пользователи хотели бы посетить эту встречу, поэтому я разработал ее: Я создал кнопку «Присоединиться» в своем шаблоне, и она отлично работает, когда я делаю событие в своем контроллере следующим образом:Как подтолкнуть определенных пользователей к коллекции Mongo?

'click .join': function(event) { 
    var params = { 
     user: Meteor.userId(), 
     username: Meteor.user().username 
    } 
    toastr.success('You've send a request'); 
    Router.go('/meetups'); 
} 

Так как я обрабатывать эти события выборку Params пользователя, это очень легко, чтобы показать свое имя, я делаю это так:

<p>{{username}} sent a request to join your meetup</p> <button class="btn-primary btn-xs yes">Ok</button> <button class="btn-danger btn-xs no">No</button> 

Я не хочу, чтобы просто показать этот пользователь, я хочу, чтобы владелец meetup также управляет запросами (вот почему я создал две кнопки). В принципе, это просто простая груда, не так ли? Вот почему я создал новую коллекцию Монго под названием «Гости» и мой 'invite event теперь выглядит следующим образом:

'click .join': function(event) { 
     var params = { 
      user: Meteor.userId(), 
      username: Meteor.user().username 
     } 
    Meteor.call('join', params); 
    toastr.success('Ok'); 
    Router.go('/meetups'); 
} 

В случае я использую call функцию, у меня есть метод, чтобы справиться с этим:

Meteor.methods({ 
    'join': function (params) { 
     Guests.insert(params); 
    } 
}); 

I также создан шаблон с именем соседнего guests:

<template name="guests"> 
    {{#each guests}} 
    <p>{{username}} sent a request to join your meetup</p> <button class="btn-primary btn-xs yes">Ok</button> <button class="btn-danger btn-xs no">No</button> 
    {{/each}} 
</template> 

и включил его в моем Meetups шаблон: {{> guests}}. Как вы можете понять, я не вижу имен пользователей. Я использовал итерацию через коллекцию guests и попытался извлечь username, потому что она работала просто отлично, определяя отдельную коллекцию. Итак, мой вопрос: как я могу нажать конкретных пользователей (в моем случае те, кто нажал кнопку join) и показать свои имена пользователей? Любая помощь будет оценена.

+0

'вар PARAMS = {пользователь: Meteor.userId(), имя пользователя:. Meteor.user() имя пользователя}' - вы вызываете 2 функции, вместо этого вы можете назвать это только один раз: 'вар пользователь = Meteor .user(); var params = {user: user._id, username: user.username} ' – 0x860111

ответ

1
<template name="guests"> 
    {{#each guests}} 
    <p>{{username}} sent a request to join your meetup</p> <button class="btn-primary btn-xs yes">Ok</button> <button class="btn-danger btn-xs no">No</button> 
    {{/each}} 
</template> 

Как насчет добавить guests helper в guests template? Вы не определили его.

Template.guests.helpers({ 
    guests: function() { 
     return Guests.find(); 
    } 
}); 
+0

Также вам нужно быть уверенным, что ваш метод join является правильным и работает. Используйте консоль (meteor mongo -> db.guests.find(). Fetch()) и проверьте. – 0x860111

+0

Спасибо за ответ! Не имея специального помощника, чтобы забрать всех гостей, была главная проблема с моим кодом –

Смежные вопросы