我正在使用Meteor 1.8,并且由于使用persistent-minimongo而出现上述错误。
持久性minimongo的用例是不仅将其用于脱机支持,而且还将其用作慢速网络的缓存。现在问题发生在用户在线并加载页面时,persistent-minimongo开始将数据从索引数据库(或类似的浏览器存储)写入minimongo,而订阅也开始写入minimongo,在这种情况下,如果persistent-minimono发生冲突首先在minimongo中写了任何文档,我们收到上述错误。
要解决此问题,我在项目的packages文件夹内克隆了mongo,并对collection.js进行了更改。以下是引发上述错误的代码部分。
Object.assign(Mongo.Collection.prototype, {
_maybeSetUpReplication(name, {
_suppressSameNameError = false
}) {
....
....
update(msg) {
....
....
} else if (msg.msg === 'added') {
if (doc) {
throw new Error("Expected not to find a document already present for an add");
}
self._collection.insert({ _id: mongoId, ...msg.fields });*
}
...
...
我更改了代码的上述部分,以免出现如下所示的错误。
else if (msg.msg === 'added') {
if (doc) {
self._collection.remove(mongoId)
}
self._collection.insert({ _id: mongoId, ...msg.fields });
注意:我不想更改流星核心软件包,但是找不到更好的解决方案。
上述更改解决了我的问题,但我对上述更改的影响有些担心。想了解为什么会引发错误而不是替换文档。
任何帮助将不胜感激。在此先感谢!