流星:预计找不到添加错误已存在的文档

时间:2018-11-20 08:40:03

标签: meteor

我正在使用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 });

注意:我不想更改流星核心软件包,但是找不到更好的解决方案。

上述更改解决了我的问题,但我对上述更改的影响有些担心。想了解为什么会引发错误而不是替换文档。

任何帮助将不胜感激。在此先感谢!

0 个答案:

没有答案