Я хочу взять список имен элементов из коллекции в виде простого массива, чтобы использовать его для таких вещей, как автозаполнение пользовательского ввода и проверка на наличие дубликатов. Я хотел бы, чтобы этот список был реактивным, чтобы изменения в данных отражались в массиве. Я пробовал следующее на основе документации 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 секунды без этого кода ). Я делаю что-то неправильно? Есть ли лучший способ сделать это?