meteor 0.5.7: how to handle/use Meteor.Collection.ObjectID?

南楼画角 提交于 2020-01-01 03:36:13

问题


I have updated my meteor yesterday and tried using the new Meteor.Collection.ObjectID. But since with no success. First i updated my collections in this way:

myCollection = new Meteor.Collection('mycollection', {idGeneration: 'MONGO'} Now, normal new inserts have an _id like Wi2RmR6CSapkmmdfn... (?)

Then i have a collection with an array included. I like to have an unique id for every object in this array. So i $push an object with a field like id: new Meteor.Collection.ObjectID() into my array. The result in the database is like this: ObjectId("5b5fc278305d406cc6c33756"). (This seems to be normal.)

But later i want to update my pushed object, if the id equals an id, which i stored as data attribute in an html tag before.

var equals = EJSON.equals(dbId, htmlId); (This results every time in false. So i logged the values dbId and htmlId into the console with console.log(typeof dbId, dbId);)

The values of this two variables is as follows:

object { _str: 'a86ce44f9a46b99bca1be7a9' } (dbId)

string ObjectID("a86ce44f9a46b99bca1be7a9") (htmlId; this seems to be correct, but why is a custom type a string?)

How to use the Meteor.Collection.ObjectID correct?


回答1:


When placing your htmlId in your html you need to put it in as a string and not as an object, remember _id is an object now, handlebars is guessing and using toString() & thats why it shows up as ObjectID("...").

So if you're using {{_id}} in your html you now need to use {{_id.toHexString}} to properly extract the string part of it out

When you extract this html value with your javascript you need to make it back into an objectid:

js:

var valuefromhtml = "a86ce44f9a46b99bca1be7a9"; //Get with Jquery,DOM,etc

htmlId = new Meteor.Collection.ObjectID(valuefromhtml); //see: http://docs.meteor.com/#collection_object_id

EJSON.equals(htmlId, dbId); //Should be true this time    


来源:https://stackoverflow.com/questions/15041128/meteor-0-5-7-how-to-handle-use-meteor-collection-objectid

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!