【问题标题】:Meteor.js 1.0: How do I return an _id outside of ObjectId using this._id?Meteor.js 1.0:如何使用 this._id 在 ObjectId 之外返回 _id?
【发布时间】:2014-11-20 01:10:10
【问题描述】:

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

当我逐字按照说明进行操作时,我会得到以下代码:

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

当我登录playerId 时,根据教程,我应该以546d2e4e1c9a86a33e37005d 的形式获取id,但我以以下形式获取它:

LocalCollection._ObjectID 
  {_str: "546d2e531c9a86a33e37005e", 
    toString: function, 
    equals: function, 
    clone: function, 
    typeName: function…}

然后我想尝试使用toString(),这最终使等效性测试在本教程的后面部分工作(因此它解决了问题),但当我期待@987654331时它仍然返回ObjectID("546d2e461c9a86a33e37005c") @ 没有 ObjectID() 包裹它的东西。

我怎样才能得到id 没有所有额外的东西?

编辑

值得注意的是,我使用 Nitrous.io 在 Chromebook 上完成了所有这些操作。我将 Nitrous.io 中的代码处理到 Meteorpad here 中,它按预期工作。

在 Nitrous.io 中获得我想要的 id 的唯一方法是使用 this._id._str 而不仅仅是 this._id。我仍然不知道为什么会这样......但这就是发生的事情。

【问题讨论】:

  • 当您将播放器插入集合时,您是自己设置_id,还是让服务器为您设置?
  • 我让服务器设置它。
  • 这不应该发生。您可以在meteorpad 中复制它吗?
  • 哈哈。不错的编辑。我警告过你关于nitrous.io!

标签: javascript mongodb meteor nitrousio


【解决方案1】:

如果您在直接向 Mongo db 插入项目时没有为 _id 指定值,它将为 _id 使用特殊的 ObjectID。如果您使用 Meteor Collection 插入一个项目,默认情况下它将使用随机 17 个字符串作为 _id。只需使用 Meteor 集合添加数据或在添加数据时手动将 _id 设置为随机的 17 个字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2018-12-28
    • 2020-05-10
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多