Nano Hash - криптовалюты, майнинг, программирование

Метеор: чтение простого файла JSON

Я пытаюсь прочитать файл JSON с помощью Meteor. Я видел различные ответы на stackoverflow, но не могу заставить их работать. Я попробовал этот, который в основном говорит:

  1. Создайте файл с именем private/test.json со следующим содержимым:
[{"id":1,"text":"foo"},{"id":2,"text":"bar"}]
  1. Прочитайте содержимое файла при запуске сервера (server/start.js):
Meteor.startup(function() {
 console.log(JSON.parse(Assets.getText('test.json')));
});

Однако этот, казалось бы, очень простой пример ничего не выводит на консоль. Если я попытаюсь сохранить его в переменной, а не в console.log, а затем отобразить его на стороне клиента, я получаю

Uncaught ReferenceError: myjson is not defined 

где myjson была переменной, в которой я ее сохранил. Я попытался прочитать клиентскую часть JSON.

    Template.hello.events({
    'click input': function () {
        myjson = JSON.parse(Assets.getText("myfile.json"));
        console.log("myjson")
  });
}

Что приводит к:

Uncaught ReferenceError: Assets is not defined 
  1. Если вы пробовали все варианты, описанные здесь: Импорт файла JSON в Meteor с более-менее одинаковым исходом.

Надеюсь, кто-нибудь сможет мне помочь

29.06.2014

Ответы:


1

Метод сервера в порядке, просто удалите лишнюю точку с запятой (;). Вам нужно немного больше в вызове клиента. Данные JSON поступают из обратного вызова.

Используйте это в событии клика:

if (typeof console !== 'undefined'){
    console.log("You're calling readit");
    Meteor.call('readit',function(err,response){
        console.log(response);
    });
}

Метеор!

29.06.2014
  • @RandelS.Hynes Это работает, спасибо! Последний вопрос:). Что мне нужно изменить, чтобы вернуть JSON.parse(Assets.getText('test.json')) и прочитать XML с именем test.xml? Простое изменение Json на xml не работает ^^ 30.06.2014
  • Assets.getText получает содержимое файла в виде строки. Если вы отформатируете этот тестовый файл JSON как правильный XML, он будет прочитан как строка. JSON.parse(string) принимает строку в формате JSON и читает ее как JSON. Я не работаю с XML, поэтому не знаю, существует ли XML-эквивалент JSON.parse(). 30.06.2014

  • 2

    Согласно документации, Assets.getText доступен только на сервере, поскольку он предназначен для чтения данных в каталоге private. , к которым у клиентов не должно быть доступа (отсюда и название).

    Если вы хотите передать эту информацию клиенту, у вас есть два варианта:

    1. Используйте Assets.getText точно так же, как вы сделали, но внутри метода на сервере, и вызовите этот метод из клиента, чтобы вернуть результаты. Это кажется мне лучшим вариантом, поскольку вы ограничиваете доступ к своим данным с помощью метода, а не делаете его полностью общедоступным.
    2. Вместо этого поместите его в папку public и используйте что-то вроде jQuery.getJSON(), чтобы прочитать его. Это не то, что я когда-либо делал, поэтому я не могу дать никаких дополнительных советов, но это выглядит довольно просто.
    29.06.2014
  • Итак, я создал метод метеора на server/start.js Meteor.methods({ readit: function(){ return JSON.parse(Assets.getText('test.json'));; } и назвал его клиентским шаблоном. hello.events({ 'click input': function () { // данные шаблона, если они есть, доступны в 'this' if (typeof console !== 'undefined') console.log(Вы нажали кнопку); console .log(Meteor.call('readit')) alert (Meteor.call('readit')) } }); } }); 29.06.2014
  • @Jaspermid имейте в виду, что вызов Meteor является асинхронным, вам нужно считывать данные из обратных вызовов, поскольку он не возвращает значение напрямую (var value = Meteor.call("readit") вернет undefined). См. асинхронный вызов по адресу: docs.meteor.com/#meteor_call. 29.06.2014
  • @Akshat Спасибо за отзыв, я не совсем понимаю документацию. Как бы я считывал данные из обратных вызовов? Сохранение его в переменной, а затем его использование не работает. ‹-новичок :) 29.06.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..