在 Mongo.Collection 中无法通过 id 找到 Meteor

Meteor can't find by id in a Mongo.Collection

我正在尝试 select 一条记录 _id,但它不起作用。

我在 javascript 控制台中遇到了与在 Meteor 代码中相同的问题,因此为了简单起见,我将 运行 通过控制台中的一个示例。

我的 collection 中有两个 Article。我正在从服务器发布此 collection:

if(Meteor.isServer){
  Meteor.publish('articles', function articlesPublication() {
    return Articles.find();
  });
}

并在客户端订阅它:

export default createContainer(() => {
  Meteor.subscribe('articles');

  return {
    articles: Articles.find().fetch(),
  };
}, App);

我可以在控制台中使用 Articles.find().fetch() 验证这些是否到达客户端:

从网上的例子来看,我应该可以做到 Articles.find({_id: id})Articles.findOne(id),但没有任何效果:

可以 findfindOne 任何其他属性,不过。 Articles.findOne({title: "Dog eats Poop"})正确returns记录:

这是怎么回事?

输入后不久,我偶然发现 an old Whosebug issue that pointed to a Meteor issue that was closed in 2013meteor mongo 控制台中创建的记录对字符串和 Mongo.ObjectId 的处理方式不同。

所以我尝试了 Articles.findOne(new Mongo.ObjectID("572bdb811ab1829622aeee78")) 而不是 Articles.findOne("572bdb811ab1829622aeee78") 并且成功了:

所以...到底是怎么回事。示例代码的 None 表明需要将 id 转换为 Mongo.ObjectID,最初提出这个问题的问题已在三年前关闭。