流星 0.5.7:如何处理/使用 Meteor.Collection.ObjectID?

2024-03-12

我昨天更新了流星并尝试使用新的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(使用前将#替换为@)

流星 0.5.7:如何处理/使用 Meteor.Collection.ObjectID? 的相关文章

随机推荐