Meteor 和 GroundDB:按 id 查找不返回任何条目

Meteor and GroundDB: find by id not returning any entries

我正在尝试为我的 meteor 应用程序实现一个离线数据库,并选择使用 “GroundDB”。现在我还处于早期学习阶段,但我遇到了一个找不到解决方案的问题:

在我的 offline-collections 上使用 .find 时,我无法通过 id 找到。每隔 属性 有效。我的 mongo 数据库中的典型 object 将如下所示:

{_id:"…someid", name:“test”, description:“test”, systemId:"…someID"};

我可以通过名称、描述甚至系统 ID 查找,但通过 _id 查找总是返回 0 个结果。

什么会导致这种行为?

这仅适用于 GroundDB。在 mongo 数据库中通过 _id 查找有效。此外,GroundDB 中的“_id”字段就在那里!在不使用过滤器的情况下执行 .find({}) 时,我可以看到所有属性(包括 _id 字段)都被复制到 groundb。

编辑

我当前关于 groundDB 的代码如下所示:

ExampleCol = new Mongo.Collection('exampleCol');


if (Meteor.isServer) {
  Meteor.publish('exampleCol', functionexampleColPublication() {
    return ExampleCol.find();
  });
}

在客户端:

ExampleCol_GROUND = new Ground.Collection('exampleCol'
  });
ExampleCol_GROUND.observeSource(ExampleCol.find());

然后: ExampleCol_GROUND.find() returns 所有条目,也在 ExampleCol 中。我就是不能 ExampleCol_GROUND.find({_id:"..."})(0 个结果)

所以我找到了解决方案,不知道是不是最优雅的。 GroundDB 似乎正在积极寻找 _id 字段并尝试将其用作选择器。我不确定是什么不起作用,我想这与我的 _id-field 是一个字符串有关。

虽然以下作品:

而不是简单的 ExampleCol_GROUND.find({_id:"..."})

我现在使用 'where' 语句:

ExampleCol_GROUND.find({$where: function() {
                   return this._id ==  "..someId.."
                }});