尝试创建ObjectID时Meteor返回无效的十六进制字符串错误?

时间:2015-10-19 19:55:57

标签: javascript jquery mongodb meteor

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

...

"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。这可能会出错?

1 个答案:

答案 0 :(得分:5)

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