http://docs.meteor.com/#meteor_methods
Я пробовал его в файле publish.js в папке моего сервера.
Я успешно вызываю Meteor.apply и пытаюсь позвонить серверу с клиента. Я всегда получаю ответ undefined.
http://docs.meteor.com/#meteor_methods
Я пробовал его в файле publish.js в папке моего сервера.
Я успешно вызываю Meteor.apply и пытаюсь позвонить серверу с клиента. Я всегда получаю ответ undefined.
Вызов Meteor.methods на сервере правильный. Это определит удаленные методы, которые запускаются в привилегированной среде и возвращают результаты клиенту. Чтобы вернуть нормальный результат, просто вызовите return из вашей функции метода с некоторым значением JSON. Чтобы подать сигнал об ошибке, введите Meteor.Error.
На клиенте Meteor.apply всегда возвращает undefined, потому что вызов метода асинхронен. Если вы хотите получить возвращаемое значение метода, последним аргументом для apply должен быть обратный вызов, которому будут переданы два аргумента: error и result в типичном стиле обратного вызова асинхронного вызова.
Является ли ваш код сервера фактически вызванным? Вы можете проверить это, обновив БД в методе и посмотрев, получает ли кеш клиента новые данные или вызывает console.log внутри тела метода и смотрит на результат процесса "метеор" в вашем терминале.
Есть несколько мест, где я могу определить my Meteor.methods() (с pro и con):
Я привел здесь короткий пример, если вам нужен рабочий пример: https://gist.github.com/2387816
Я надеюсь, что некоторые из них найдут использование этого добавления, и это не помешает проблеме, что методы в первую очередь предназначены для работы на сервере, как объяснил дебергалис.
Использование Meteor.methods() на клиенте тоже полезно. (ищите "заглушку" в разделе Meteor.call()...)
Это позволяет клиенту (синхронно) имитировать ожидаемый эффект вызова сервера.
Как упоминалось в документах:
Вы используете методы все время, потому что мутаторы базы данных (insert, обновление, удаление) реализованы как методы. (...)
Отдельный раздел, объясняющий использование заглушек на клиенте, может облегчить понимание вызовов методов на сервере.