我正在浏览网站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
。我仍然不知道为什么会这样......但那就是发生了什么。
答案 0 :(得分:1)
如果您在直接向Mongo数据库插入项目时未给出 _id 的值,则会对 _id 使用特殊的ObjectID。如果使用Meteor Collection插入项目,默认情况下它将使用随机的17个字符的字符串 _id 。只需使用Meteor集合添加数据,或在添加数据时手动将_id设置为随机的17个字符串。