При попытке визуализации моего шаблона я хочу загрузить данные с сервера. Я пытаюсь использовать Meteor.call, но, согласно документации, я явно не в заглушке.Загрузить данные с помощью Meteor.call при загрузке
Если я использую Meteor.call внутри обработчика событий, ответ, который я верну, верен. Если я назову его в template.created или подобном, я получаю неопределенный ответ. Думаю, я мог бы использовать асинхронный вызов, чтобы сделать это, а затем отобразить его, когда он доступен. Но есть ли другой путь?
Я не хочу, чтобы у клиентов был прямой доступ к БД, я хочу, чтобы он пришел с сервера.
//This doesn't work
Template.config.created = function() {
console.log(Meteor.call('getValue')); //returns undefined
};
//This works
Template.config.events({
'blur #button' : function() {
console.log(Meteor.call('getValue')); //Prints value
}
Любые подсказки?
D
Еще одно замечание, что в клиентах Метеор никогда не имеют прямого доступа к БД, даже при использовании на стороне клиента DB API. Все запросы будут проверяться в соответствии с указанными вами правилами allow/deny. Это дает вам полный контроль ACL над запросами, которые клиент может запускать. По крайней мере, вы должны определить дескрипторы методов на клиенте, чтобы он мог компенсировать латентность, что делает ваше приложение менее вялым по сравнению с ожиданием ответов на серверные методы. – sbking
Добавление в Cuberto - по умолчанию Meteor имеет автообновление и небезопасное включение, которое публикует все данные для всех клиентов и позволяет клиенту получить полный доступ. Вы можете отключить их, используя $ meteor remove <имя_пакета> и опубликовать/подписаться на данные, которые вам нужны. Вот довольно приличная статья: http://andrewscala.com/meteor/ – hharnisc
Два ответа ниже. Так что сделайте разъяснения выше. –