mongodb - meteor 无法在 Mongo.Collection 中通过 id 找到

标签 mongodb meteor minimongo

我试图通过它的 _id 选择一条记录,但它不起作用。

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

我的收藏中有两个 Article。我正在从服务器发布这个集合:

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().fetch()

从在线示例来看,看起来我应该能够执行 Articles.find({_id: id})Articles.findOne(id),但没有作品:

Articles.find(id) doesn't work in the console

不过,我可以通过任何其他属性findfindOneArticles.findOne({title: "Dog eats Poop"}) 正确返回记录:

findOne with the title attribute works

这是怎么回事?

最佳答案

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

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

casting the id as a Mongo.ObjectID works

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

关于mongodb - meteor 无法在 Mongo.Collection 中通过 id 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083187/

相关文章:

node.js - 按最新时间戳聚合 mongodb

javascript - 巴巴图斯 :star-rating error in meteor js

javascript - meteor 服务器中的异步函数

javascript - 铁路由器: Meteor JS

javascript - 从模板助手meteor/mongodb访问minimongo

mongodb - 不可达/健康的副本集

java - 在不向域对象添加不必要的注释的情况下使用 Morphia 来持久化域对象的策略?

meteor - 可以从控制台找到所有客户端集合吗?

node.js - MongoDB Aggregate 中的 Mongoose Virtuals

mongodb - meteor /MongoDB : Update an array item in a collection by index