Метеор: вставить элемент списка в коллекцию из другой коллекции по нажатию кнопки? ошибка. Внутренняя ошибка сервера

У меня есть список объектов, называемых категориями, внутри них находится массив других объектов, которые являются сообщениями в этой категории, где id :129 — это идентификатор категории и >ID :100 – это идентификатор сообщения. это выглядит так

введите здесь описание изображения

В моем html у меня есть кнопка для каждого элемента категории, при нажатии на которую она берет эту категорию и ее содержимое (сообщения и другие данные) и вставляет ее в новую коллекцию, которая должна быть специфичной для пользователя, как закладка . то есть как tumblar, flipboard, google currents, zite имеют личные потоки для пользователя, и когда вы следите за темой, сообщения в этой теме отражаются на вашей личной ленте.

Однако я получаю две ошибки

на консоли хром я получаю:

Ошибка при вызове метода addTimeline: внутренняя ошибка сервера [500]

в моем терминале я получаю:

Исключение при вызове метода addTimeline ReferenceError: документ не определен

мой сервер js такой

Meteor.methods({
    'addTimeline': function(data){
        Timeline.insert(doc);
    }
});

Мой клиент js выглядит так

Timeline.allow({
  insert: function (userId) {
     return (userId);
  }
 });
Template.CategoriesMain.events({
  'click .addFav':  function() {
    Meteor.call('addTimeline');

  }
});

Мой html выглядит так

<template name="CategoriesMain">

<ul>
  {{#each articles}}
    <li>
      <a href="/catsingle/CategorySingle/{{_id}}"><h2>{{name}}</h2></a>
    </li>
    <button type="checked" name="button" class="addFav">add to fav</button>
  {{/each}}

правда в том, что я новичок в метеоре, поэтому я пытался взломать и разбить, поэтому я не уверен, в чем именно проблема или как заставить ее работать.


person Shingai Munyuki    schedule 29.06.2016    source источник


Ответы (1)


Я вижу две ошибки.

Ошибка 1

В вашем методе addTimeline вы используете переменную doc, но вы называете свой параметр data.

Ошибка 2

В обработчике события клика вы вызываете метод addTimeline, но не передаете ему никаких аргументов (параметр data будет равен undefined.

person Peppe L-G    schedule 29.06.2016
comment
Спасибо за помощь. не могли бы вы объяснить мне, как я могу выбрать правильные аргументы и параметры? Меня это действительно смущает. когда вы говорите, но не передаете ему никакого аргумента (параметр данных будет неопределенным, вы говорите, что результат будет неопределенным, или мне нужно указать неопределенное значение в качестве параметра? Также является ли «данные» правильным параметром для использования в этом пример? - person Shingai Munyuki; 30.06.2016
comment
@Drakata, как и во всех создаваемых вами функциях, вы можете назвать свои параметры. В этом случае я считаю приемлемыми имена data и doc, но я бы выбрал doc. Аргумент должен быть объектом JavaScript, который вы хотите вставить в коллекцию. Примечание. Я не читал весь ваш пост, я просто взглянул на код и рассказал вам об ошибках, которые я мог найти, я не знаю, что вы на самом деле пытаетесь сделать. - person Peppe L-G; 30.06.2016