流星找到一个id的对象

Max*_*s S 4 meteor

假设我有一个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).你会注意到,即使我们正在寻找的文件肯定存在,我也找不到它.

在此输入图像描述

Aks*_*hat 8

您必须将_id定义为a Mongo.ObjectID才能正确表示ObjectID类型.

Posts.findOne({_id: new Mongo.ObjectID("557fba5a8032a674d929e6a1") });
Run Code Online (Sandbox Code Playgroud)

使用Meteor的ObjectIDs的一个警告是它们的时间戳不正确.特别是如果它们被插入客户端.

  • 我认为这是不正确的,因为 Meter 不使用正常的 Mongo ID,您会收到错误消息。有关更多详细信息,请参阅:/sf/ask/2325595961/ (2认同)