Использование пакета meteor’s simple:rest в публикациях с аргументами

#javascript #rest #meteor

#javascript #rest #meteor

Вопрос:

Я приложение meteor, использующее пакет simple: rest для доступа к публикациям, работает очень хорошо!

Однако мне еще не удалось ПОЛУЧИТЬ публикацию, для которой требуется аргумент.

В документах ничего не говорится о публикациях с аргументами.

  • Когда я вызываю GET URL без аргумента http://localhost:3000/publications/export /, Я получаю сообщение об ошибке (при проверке аргумента в моей публикации)
  • Когда я вызываю get URL с прикрепленным аргументом: http://localhost:3000/publications/export/12345 / вместо этого загружается основное приложение (ну, с некоторыми неработающими ссылками на изображения)
  • Когда я добавляю параметр URL в публикацию
   Meteor.publish("export", function exportPublication(id) {...}, {
    url: "export/:0",
  })
  

это не помогает, я все еще получаю основное приложение.
Пример наhttps://github.com/stubailo/meteor-rest/blob/master/packages/rest/rest-tests.js предполагает, что использование параметра URL представляется правильным способом определения маршрута для публикации с аргументами.

Чего мне не хватает?

Ответ №1:

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

   Meteor.publish("export", function exportPublication(id) {...}, {
    url: "export/:0",
  })
  

и вы можете получить доступ id к коду, который извлекает данные. Если вы обрабатываете его как число, вам может потребоваться его синтаксический анализ: parseInt(id, 10)

Также я бы использовал postman или curl для доступа к URL (похоже, вы используете браузер)

Комментарии:

1. Верно, мне не хватало id аргумента в приведенном выше примере — но не в моем коде, я исправил это выше. Я попробовал curl, но результат тот же. Когда я обращаюсь http://localhost:3000/publications/api-routes , я получаю возвращенный JSON. Но с curl http://localhost:3000/publications/export/123 я получаю html-страницу, которая выглядит очень похоже на главную страницу приложения.

Ответ №2:

О, когда я публикую URL как export/:0 , он сопоставляется с http://localhost:3000/export/123 , но не с http://localhost:3000/publications/export/123 . Я думал, что «публикации» будут добавлены автоматически.