Meteor.js 1.0:如何使用this._id返回ObjectId之外的_id?

时间:2014-11-20 01:10:10

标签: javascript mongodb meteor nitrousio

我正在浏览网站Meteortips.com上的简单教程以了解会话变量,但我在检索对象ID时遇到了问题。

当我逐字逐句地按照说明操作时,我最终得到了这段代码:

Template.leaderboard.events({
    "click .player": function(){
      var playerId = this._id;
      Session.set("selectedPlayer", playerId);
      console.log(playerId)
    }
  })

当我记录playerId时,根据教程,我应该以{{1​​}}的形式获得id,但我得到的形式是:

546d2e4e1c9a86a33e37005d

然后我考虑尝试使用LocalCollection._ObjectID {_str: "546d2e531c9a86a33e37005e", toString: function, equals: function, clone: function, typeName: function…} ,最后在本教程的后续部分中进行等效测试工作(因此它解决了问题),但是当我还是时,它仍然返回toString()期待ObjectID("546d2e461c9a86a33e37005c")没有id的东西缠绕在它周围。

如果没有所有额外的东西,我如何获得ObjectID()

修改

值得注意的是,我使用Nitrous.io在Chromebook上完成了所有这些操作。我将Nitrous.io的代码应用到了Meteorpad here,它的工作方式与预期相符。

我在Nitrous.io中获得id的唯一方法就是使用id代替this._id._str。我仍然不知道为什么会这样......但那就是发生了什么。

1 个答案:

答案 0 :(得分:1)

如果您在直接向Mongo数据库插入项目时未给出 _id 的值,则会对 _id 使用特殊的ObjectID。如果使用Meteor Collection插入项目,默认情况下它将使用随机的17个字符的字符串 _id 。只需使用Meteor集合添加数据,或在添加数据时手动将_id设置为随机的17个字符串。