假设我有一个id字符串,看起来像557fba5a8032a674d929e6a1存储在session中.我尝试检索一个_id与上面相同的文档,但即使它存在,我也找不到它.
Posts.findOne({_id: "557fba5a8032a674d929e6a1"});
Run Code Online (Sandbox Code Playgroud)
返回undefined.现有对象如下所示:

我可以做到这一点
var id = "557fba5a8032a674d929e6a1";
var posts = Posts.find().fetch();
var post = _.filter(posts, function (post) { return post._id._str === id });
return post
Run Code Online (Sandbox Code Playgroud)
但它看起来很脏.这是我的控制台输入和输出,以进一步调查此行为(Posts == Applicants).你会注意到,即使我们正在寻找的文件肯定存在,我也找不到它.

您必须将_id定义为a Mongo.ObjectID才能正确表示ObjectID类型.
Posts.findOne({_id: new Mongo.ObjectID("557fba5a8032a674d929e6a1") });
Run Code Online (Sandbox Code Playgroud)
使用Meteor的ObjectIDs的一个警告是它们的时间戳不正确.特别是如果它们被插入客户端.
| 归档时间: |
|
| 查看次数: |
3760 次 |
| 最近记录: |