Метеор: временно сохранить локальную коллекцию при использовании ее в разных файлах - PullRequest
1 голос
/ 14 апреля 2019

У меня есть файл, созданный по пользовательскому маршруту, который я буду использовать для локальных коллекций.

Этот файл находится в import / localDb / и называется Patient.js :

import { Mongo } from 'meteor/mongo';

const PatientsLocal = new Mongo.Collection();

export default PatientsLocal;

Что я делаю, так это импортирую этот файл каждый раз, когда мне нужно выполнить операцию (Insert, fetch, ...)

Так, например, яесть в файле:

import PatientsLocal from '../../../localDb/patients';

// ...

PatientsLocal.insert(patient);

Проблема:

Когда мне нужно выполнить операцию, я импортирую файл Patient.js , поэтому файл работает полностьюснова, и коллекция создается в другой раз, поэтому я не могу вставить объект в один файл и извлечь его в другой.

Что я могу сделать, чтобы сохранить коллекцию во время выполнения и достичь того, что мне нужно?

1 Ответ

0 голосов
/ 14 апреля 2019

Все будет в порядке, экспортировав его как const:

export const PatientsLocal = new Mongo.Collection();

Однако есть над чем подумать: модуль содержит как определения, так и код реализации.Хорошей практикой является отделение экземпляра от определения.

Возможный обходной путь - экспорт своего рода объекта контекста, который содержит несколько статических свойств, определяющих общий контекст Patients, и декорирование его при запуске с помощью свойств, которые имеютдля создания экземпляра:

import / local / Patient.js

export const Patients = {
  name: 'patients',
  collection: null,
  // other definitions...
}

Затем в коде запуска вы создаете экземпляр Collection один раз :

client / main.js

import { Patients } from '../imports/local/patients'
Patients.collection = new Mongo.Collection()

(обратите внимание, что это можно переместить в собственный файл модуля запуска)

и в коде выполнениявы импортируете контекст вместо коллекции:

import { Patients } from '../../../local/patients'

// ...

Patients.collection.insert(patient)

Обратите внимание, что это всего лишь несколько примеров того, как решить эту проблему.Другие могут включать использование пространства имен global (которое не рекомендуется, но не запрещено) или некоторый класс реестра, который отслеживает все экземпляры коллекций (например, dburles:mongo-collection-instances, который является отличным пакетом, но получает доступ к коллекциям через nameкоторый не определен в местных коллекциях).

...