Как создать реактивный массив из коллекции Meteor?

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

    setReactiveArray = (objName, Collection, field) ->
        update = ->
          context = new Meteor.deps.Context()
          context.on_invalidate update
          context.run -> 
            list = Collection.find({},{field: 1}).fetch()
            myapp[objName] = _(list).pluck field
        update()

    Meteor.startup ->
        if not app.items?
            setReactiveArray('items', Items, 'name')

    #set autocomplete using the array
    Template.myForm.set_typeahead =  ->
       Meteor.defer ->
        $('[name="item"]').typeahead {source: app.items}    

Этот код работает, но он убивает время загрузки моего приложения (занимает 5 -10 секунд для загрузки на dev/localhost против ~1 секунды без этого кода ). Я делаю что-то неправильно? Есть ли лучший способ сделать это?

9
задан rdickert 17 August 2012 в 18:27
поделиться