Вставка документов Meteor Minimongo, возвращенная методом, приводит к ошибке при подписке - PullRequest
0 голосов
/ 09 мая 2019

Рассмотрим коллекцию, созданную для сервера и клиента:

export const MyCollection = new Mongo.Collection('myCollection')

Я получаю Документы с Сервера по причинам, связанным с производительностью, Методами:

Сервер

Meteor.methods({
  getDocs() {
    return MyCollection.find({ ... }).fetch()
  }
})

На клиенте я храню их внутри локальной коллекции:

клиент

const LocalCollection = MyCollection._collection
Meteor.call('getDocs', { ... }, (err, docs) => {
  docs.forEach(doc => LocalCollection.insert(doc))
})

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

Uncaught Error: Ожидается, что не найден документ, уже присутствующий для добавления

Мой вопрос заключается в том, нужно ли очищать Localcollection перед подпиской вручную или есть способ просто сказать ей «переопределить существующие документы, несмотря ни на что»?

Обратите внимание, что я использую LocalCollection на клиенте, потому что allow/deny по умолчанию настроено на запрет для всего и для всех документов, которые вставляются как

Meteor.call('getDocs', { ... }, (err, docs) => {
  docs.forEach(doc => MyCollection.insert(doc))
})

будет отклонено для вставки.

...