我昨天更新了我的流星并尝试使用新的Meteor.Collection.ObjectID
.但由于没有成功.首先,我以这种方式更新了我的收藏:
myCollection = new Meteor.Collection('mycollection', {idGeneration: 'MONGO'}
现在,新的正常插入有_id
样Wi2RmR6CSapkmmdfn
......(?)
然后我有一个包含数组的集合.我喜欢为这个数组中的每个对象都有一个唯一的id.所以我$push
是一个像id: new Meteor.Collection.ObjectID()
我的数组一样的字段的对象.数据库中的结果如下:ObjectId("5b5fc278305d406cc6c33756")
.(这似乎很正常.)
但后来我想更新我推送的对象,如果id
等于一个id,我之前将其作为数据属性存储在html标签中.
var equals = EJSON.equals(dbId, htmlId);
(这导致每一次false
,所以我记录的值dbId
,并htmlId
与控制台console.log(typeof dbId, dbId);
)
这两个变量的值如下:
object { _str: 'a86ce44f9a46b99bca1be7a9' }
(DBID)
string ObjectID("a86ce44f9a46b99bca1be7a9")
(htmlId;这似乎是正确的,但为什么自定义类型是一个字符串?)
如何使用Meteor.Collection.ObjectID
正确?
放入你htmlId
的html时你需要把它作为一个字符串而不是一个对象,记住_id
现在是一个对象,把手猜测和使用toString()
&那就是为什么它出现ObjectID("...")
.
因此,如果你{{_id}}
在你的html中使用,你现在需要{{_id.toHexString}}
用来正确地提取它的字符串部分
当您使用javascript提取此html值时,您需要将其恢复为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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3818 次 |
最近记录: |