我正在尝试在我的 Meteor 应用程序中构建路线。路由工作得很好,但使用路由路径从数据库获取信息却不起作用。我用这个创建我的页面特定路线:
FlowRouter.route('/level/:id'...
这条路线将我毫无问题地带到相关模板。然后我想从数据库中获取属于该页面的一些数据。在我的模板助手中,我通过以下方式获取页面的 id:
var id = FlowRouter.getParam('id');
这样就得到了ObjectID()
但以字符串格式。所以我试图找到ObjectID()
集合中的文档如下:
Levels.findOne({_id: id});
但是当然文档没有字符串格式的ObjectID(否则我们不会称其为“object”id)。因此,它会带来未定义的错误。我不想创建自己的_id
那么我能做些什么吗?
PS:Mongo用来创建_id
s 为纯文本。有些事情就像我会接受的_id._str
现在但突然间,它产生了ObjectID()
。我不知道为什么,有什么想法吗?
MongoDB 使用 ObjectIds 作为_id
默认情况下为 s,Meteor 默认情况下显式设置 GUID 字符串。
也许您使用插入meteor shell
过去使用 mongo shell/GUI 或meteor mongo
提示这样做,结果是ObjectId
正在创建。
如果这种情况发生在开发环境中,您可以再次生成数据。
否则,您可以尝试生成新的_id
s 为您的数据使用Meteor.uuid()
.
如果你想使用ObjectId
作为某个集合的默认值,您可以指定idGeneration其构造函数的选项为'MONGO'
.
如果你有一个字符串内容ObjectId
想要转换它,你可以发出
let _id = new Mongo.ObjectID(my23HexCharString);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)