我试图通过它的 _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({_id: id})
或 Articles.findOne(id)
,但没有作品:
不过,我可以通过任何其他属性find
和findOne
。 Articles.findOne({title: "Dog eats Poop"})
正确返回记录:
这是怎么回事?
最佳答案
输入后不久,我偶然发现了 an old StackOverflow issue指向a Meteor issue that was closed in 2013在 meteor mongo
控制台中创建的记录以不同方式处理字符串和 Mongo.ObjectId
。
所以我尝试了 Articles.findOne(new Mongo.ObjectID("572bdb811ab1829622aeee78"))
而不是 Articles.findOne("572bdb811ab1829622aeee78")
并且成功了:
所以...到底是什么。示例代码中没有一个表明需要将 id 转换为 Mongo.ObjectID
,最初提出这个问题的问题已在三年前关闭。
关于mongodb - meteor 无法在 Mongo.Collection 中通过 id 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083187/