meteor 0.5.7:如何处理/使用meteor.Collection.ObjectID?
我昨天更新了meteor,并尝试使用新的meteor 0.5.7:如何处理/使用meteor.Collection.ObjectID?,meteor,objectid,Meteor,Objectid,我昨天更新了meteor,并尝试使用新的meteor.Collection.ObjectID。 但是因为没有成功。首先,我以这种方式更新了我的收藏: myCollection=newmeteor.Collection('myCollection',{idGeneration:'MONGO'} 现在,普通的新插入有一个\u id像Wi2RmR6CSapkmmdfn 然后我有一个包含数组的集合。我希望这个数组中的每个对象都有一个唯一的id。因此我$push将一个具有类似id:new Meteor.c
meteor.Collection.ObjectID
。
但是因为没有成功。首先,我以这种方式更新了我的收藏:
myCollection=newmeteor.Collection('myCollection',{idGeneration:'MONGO'}
现在,普通的新插入有一个\u id
像Wi2RmR6CSapkmmdfn
然后我有一个包含数组的集合。我希望这个数组中的每个对象都有一个唯一的id。因此我$push
将一个具有类似id:new Meteor.collection.ObjectID()的字段的对象推送到我的数组中。数据库中的结果如下:ObjectID(“5B5FC278305D40CC6C33756”)
(这似乎很正常。)
但是稍后,如果id
等于一个id,我想更新推送的对象,这个id以前作为数据属性存储在html标记中
var equals=EJSON.equals(dbId,htmlId);
(每次都会导致false
。因此,我使用console.log(dbId,dbId的类型);
将值dbId
和htmlId
记录到控制台中
这两个变量的值如下所示:
对象{u str:'a86ce44f9a46b99bca1be7a9'}
(dbId)
字符串ObjectID(“a86ce44f9a46b99bca1be7a9”)
(htmlId;这似乎是正确的,但为什么自定义类型是字符串?)
如何使用Meteor.Collection.ObjectID
正确吗?在html中放置htmlId
时,您需要将其作为字符串而不是对象,请记住\u id
现在是一个对象,车把正在猜测并使用toString()
&这就是它显示为ObjectID(“…”)的原因
因此,如果您在html中使用{{{{u id}}
,您现在需要使用{{{{u id.toHexString}}
正确地提取字符串部分
当您使用javascript提取此html值时,需要将其返回到objectid中:
js:
谢谢你的快速回答!:)顺便说一句:
{{{{u id.toHexString}}
没有直接工作,但是我注册了一个全局把手助手,它可以完成这个工作。没有助手的情况下应该可以工作,我在发布之前测试了它。你有其他pre Meteor 0.57对象id吗?嗯。。。我已经删除了我的集合,但是当我用{{debug\u id.toHexString}
调用Handlebar debug helper时,它在控制台中打印给定的值,而不打印任何内容。我已经查看了minimongo源代码,{{{u id.{u str}}
直接工作(ObjectID.toHexString()
返回\u str
)
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