2013-08-23 2 views
0

У меня был код, который вызывал HTTP-вызов с сервера, использовал EJSON.parse для анализа этих данных с URL-адреса (первоначально в формате JSON), а затем добавил информацию из проанализированных данных в Meteor коллекция. Он работал нормально, но через некоторое время после обновления до Meteor 0.6.5 код перестает работать. В моем коде я удаляю всех членов коллекции при запуске сервера перед тем, как сделать HTTP-вызов и вставить в коллекцию. Я заметил что-то странное, глядя на вещи в консоли: коллекция содержит информацию, которая больше не существует. С тех пор я удалил код, который сделал HTTP-вызов и вставлял в коллекцию, но в коллекции все еще есть объекты. Фактически, в коллекции есть объекты, которые содержат информацию из URL-адреса, которая находится за день до этого и больше не указана в URL-адресе. Как это может быть?Meteor Collection содержит устаревшую информацию

EDIT: Вот некоторые из кода с вызовом HTTP:

Halls = new Meteor.Collection("halls"); 

...

if (Meteor.is_server) { 
    Meteor.startup(function() { 
     Halls.remove({}); 

     var result = HTTP.call("GET", "http://claremontcollegemenus.appspot.com/json"); 
     var parsedData = EJSON.parse(result.content); 

     for (date in parsedData.dates) { 
      if (parsedData.dates[date].date == today) { // Check for today's date 
       for (var menu in parsedData.dates[date].menus){ 
        Halls.insert({name: parsedData.dates[date].menus[menu].name, meals: parsedData.dates[0].menus[menu].meals, date: parsedData.dates[date].date}); 
       } 
      } 
     } 
    }); 
} 

Кроме того, я заметил if (Meteor.is_server) { (вызывает ошибку), а затем раскомментировать ее, и теперь в коллекции ничего нет.

+1

Привет, добро пожаловать в SO. Не могли бы вы разместить какой-нибудь код? –

+0

Возможно передача данных из другого места. – Denis

+0

Я просто добавил код на свой пост. Что означает передача данных из другого места? – Ethan

ответ

0

Есть ли ошибки по поводу того, что EJSON не определен? 0.6.5 потребовалось явно добавить все зависимости пакета.

Попробуйте meteor add ejson в вашей папке проекта и сообщите нам, что вы получаете.

+0

Я уже добавил – Ethan

+0

Дайте больше информации, как я уже говорил, ищите сообщения об ошибках или публикуйте минимальный код, который показывает ваш случай. – imslavko

+0

Я только что сделал следующий «эксперимент»: я добавил 'Halls.insert ({name: 'hello'});' in 'if (Meteor.is_server)', перезапустил сервер и затем выполнил поиск 'Halls.findOne ({ name: 'hello'}) 'в консоли Javascript в Chrome, где я запускал свое приложение локально. Поиск возвращен неопределенным. Затем я добавил 'Halls.insert ({name: 'hello'});' in 'if (Meteor.isClient)', а затем выполнил поиск 'Halls.findOne ({name: 'hello'})', который возвратил объект. Затем я удалил оба экземпляра 'Halls.insert ({name: 'hello'});' и перезапустил сервер; объект появляется, когда я ищу на консоли. – Ethan

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