我昨天更新了流星并尝试使用新的Meteor.Collection.ObjectID
。
但此后一直没有成功。首先,我以这种方式更新了我的收藏:
myCollection = new Meteor.Collection('mycollection', {idGeneration: 'MONGO'}
现在,普通的新刀片有一个_id
like Wi2RmR6CSapkmmdfn
... (?)
然后我有一个包含数组的集合。我喜欢这个数组中的每个对象都有一个唯一的 id。所以我$push
具有类似字段的对象id: new Meteor.Collection.ObjectID()
进入我的数组。数据库中的结果是这样的:ObjectId("5b5fc278305d406cc6c33756")
。 (这似乎很正常。)
但后来我想更新我推送的对象,如果id
等于一个id,我之前将其作为数据属性存储在html标签中。
var equals = EJSON.equals(dbId, htmlId);
(这每次都会导致false
。所以我记录了这些值dbId
and 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)