【问题标题】:Meteor returns invalid hexadecimal string error trying to create ObjectID?Meteor 在尝试创建 ObjectID 时返回无效的十六进制字符串错误?
【发布时间】:2015-10-20 13:09:54
【问题描述】:

我正在向数据库中插入一些东西并使用 jQuery 在其他地方更新它(让我休息一下,我是新手),之后我需要能够单击它并显示一些 UI 内容,这意味着获取ID。于是我设置了ID变量,然后尝试,然后在点击事件中尝试使用它:

...

"click .message-entry" : function (e) {
    var id = this._id || new Meteor.Collection.ObjectID(newMessageId);
    Session.set('singleMessageId', id);
},

...

原则上应该可以工作,但是我得到以下错误返回:

Uncaught Error: Invalid hexadecimal string for creating an ObjectID

断点显示 ID 既是字符串又是新插入文档的 ID。这里可能出了什么问题?

【问题讨论】:

  • (让我休息一下,我是新人)??所以你知道这可能是错误的方法,但觉得将它组合在一起比展示更好的方法更重要?当您遵循既定模式时,在数据库中插入/更新项目并显示它们是一项微不足道的任务。
  • 无论如何,您传递给 Meteor.Collection.ObjectID 的 newMessageId 变量是什么?
  • 另外 api 现在是 new Mongo.ObjectID([hexString])
  • @JeremyK 这是我需要尽快完成的个人项目。该变量是问题中提到的插入文档的ID字符串。

标签: javascript jquery mongodb meteor


【解决方案1】:

默认情况下,Meteor 不使用 Mongo 的十六进制对象 ID。您可以通过将{idGeneration: 'MONGO'} 传递给new MongoCollection() 来告诉Meteor 使用Mongo 样式ID,或者(可能更容易)只使用newMessageID 而不是new Mongo.ObjectID(newMessageID),如果newMessageID 的值是返回的_id insert().

【讨论】:

  • 就是这样。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多