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.."
}});
我正在尝试为我的 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.."
}});