我正在浏览网站上的简单教程 Meteortips.com了解 session 变量,但我无法检索对象 ID。
当我逐字逐句地按照说明操作时,我最终得到了这段代码:
Template.leaderboard.events({
"click .player": function(){
var playerId = this._id;
Session.set("selectedPlayer", playerId);
console.log(playerId)
}
})
当我登录 playerId 时,根据教程,我应该以以下形式获取 id:546d2e4e1c9a86a33e37005d,但是,我得到它的形式:
LocalCollection._ObjectID
{_str: "546d2e531c9a86a33e37005e",
toString: function,
equals: function,
clone: function,
typeName: function…}
然后我想尝试使用 toString(),最终在教程的后面部分进行等效测试(因此它解决了问题),但它仍然返回 ObjectID("546d2e461c9a86a33e37005c") 当我期待 id 时没有 ObjectID() 包裹它。
如何在没有所有额外内容的情况下获得 id?
可能值得注意的是,我是在 Chromebook 上使用 Nitrous.io 完成所有这些操作的。我将 Nitrous.io 中的代码复制到 Meteorpad here并且它按预期工作。
在 Nitrous.io 中,我能够获得所需的 id 的唯一方法是使用 this._id._str 而不仅仅是 this。 _id。我仍然不知道为什么会这样……但事情就是这样。
最佳答案
如果您在直接向您的 Mongo 数据库插入项目时没有为 _id 提供值,它将使用特殊的 ObjectID对于 _id。如果您使用 Meteor Collection 插入一个项目,它将默认使用随机的 17 个字符串作为 _id。只需使用 Meteor 集合添加数据或在添加数据时手动将 _id 设置为随机的 17 个字符的字符串。
关于javascript - meteor .js 1.0 : How do I return an _id outside of ObjectId using this. _id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27030047/