Рассмотрим коллекцию, созданную для сервера и клиента:
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))
})
будет отклонено для вставки.