2016-05-25 3 views
0

Я новичок в Meteor (и, если на то пошло), и экспериментирую немного, пытаясь преобразовать приложение, которое я сейчас запускаю в Google App Engine в Django/Python.Функция поиска данных входа в маршрутизатор Iron Router запускается дважды

У меня есть следующая запись маршрута с использованием Iron Router:

this.route("editFacility", { 
    path: "/facilities/:_id/edit", 
    template: "editFacility", 
    data: function() { 
    return Facilities.findOne({ _id: this.params._id }); 
    } 
}); 

... и следующий шаблон (используя QuickForm AUTOFORM в):

<template name="editFacility"> 
    <h2>Edit facility "{{description}}"</h2> 
    <div class="row"> 
    <div class="col-md-12"> 
     {{> quickForm 
     collection="Facilities" 
     omitFields="createdAt, updatedAt" 
     doc=this 
     id="updateFacilityForm" 
     type="update" 
     template="bootstrap3-horizontal" 
     label-class="col-sm-2" 
     input-col-class="col-sm-6"}} 
    </div> 
    </div> 
</template> 

Маршрут получает инициируются:

{{#linkTo route='editFacility' _id=this._id class="btn btn-default btn-xs"}}Edit{{/linkTo}} 

Первоначально это выглядело так, что форма не была заполнена данными, но Оператор debugger в функции data: маршрута показал, что эта функция фактически выполняется дважды. В первый раз, найдя документ и правильно заполнив форму, сразу же последовали второй раз и не смогли найти, тем самым очистив форму. Стек не выявили каких-либо подробности и выглядит идентично для обеих серий:

enter image description here

Я гугле вопрос и нашел несколько ссылок, но ни с прозрачным раствором. Я обновил meteor и все мои пакеты до последней версии &, но эта проблема сохраняется.

Так что мой вопрос, что вызывает meteor/Iron Router, чтобы выполнить эту запись маршрута дважды?

+1

Пожалуйста, ознакомьтесь с реакционной способностью в метеор. Вызов 'findOne' является реактивным, поэтому, когда данные в коллекции изменяются, он повторно запускается. Не знаю, почему данные исчезнут в коллекции (обычно это наоборот, сначала пустая, а затем нет), но это определенно звучит как реактивный повторный запуск. –

+0

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

+0

@ChristianFritz Я читал о реактивности. В коллекции не было изменений данных, кроме первой успешной находки документа (если это соответствует «изменению»). Вторая находка с идентичным контекстом и идентификатором документа выходит из строя и заполняет форму. Я озадачен ... – Roger

ответ

1

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