在 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)
,但没有任何效果:
我 可以 find
和 findOne
任何其他属性,不过。 Articles.findOne({title: "Dog eats Poop"})
正确returns记录:
这是怎么回事?
输入后不久,我偶然发现 an old Whosebug issue that pointed to a Meteor issue that was closed in 2013 在 meteor mongo
控制台中创建的记录对字符串和 Mongo.ObjectId
的处理方式不同。
所以我尝试了 Articles.findOne(new Mongo.ObjectID("572bdb811ab1829622aeee78"))
而不是 Articles.findOne("572bdb811ab1829622aeee78")
并且成功了:
所以...到底是怎么回事。示例代码的 None 表明需要将 id 转换为 Mongo.ObjectID
,最初提出这个问题的问题已在三年前关闭。
我正在尝试 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)
,但没有任何效果:
我 可以 find
和 findOne
任何其他属性,不过。 Articles.findOne({title: "Dog eats Poop"})
正确returns记录:
这是怎么回事?
输入后不久,我偶然发现 an old Whosebug issue that pointed to a Meteor issue that was closed in 2013 在 meteor mongo
控制台中创建的记录对字符串和 Mongo.ObjectId
的处理方式不同。
所以我尝试了 Articles.findOne(new Mongo.ObjectID("572bdb811ab1829622aeee78"))
而不是 Articles.findOne("572bdb811ab1829622aeee78")
并且成功了:
所以...到底是怎么回事。示例代码的 None 表明需要将 id 转换为 Mongo.ObjectID
,最初提出这个问题的问题已在三年前关闭。