考虑为服务器和客户端创建的集合:
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))
})
现在这可以正常工作,但是当我在另一点运行订阅时还返回该方法返回的文档中的文件时,我收到以下错误:
未捕获的错误:预计不会找到要添加的现有文件
我的问题是,是否要在订阅前手动刷新Localcollection,或者是否有办法告诉它“无论如何都覆盖现有文档”?
请注意,我正在客户端上使用LocalCollection
,因为默认情况下allow/deny
设置为拒绝所有内容以及像这样插入的任何文档
Meteor.call('getDocs', { ... }, (err, docs) => {
docs.forEach(doc => MyCollection.insert(doc))
})
将被拒绝插入。