Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 流量路由器不';不能使用ObjectID。有办法吗?_Mongodb_Meteor - Fatal编程技术网

Mongodb 流量路由器不';不能使用ObjectID。有办法吗?

Mongodb 流量路由器不';不能使用ObjectID。有办法吗?,mongodb,meteor,Mongodb,Meteor,我正在尝试在我的Meteor应用程序中建立路线。路由工作得非常好,但使用路由路径从数据库获取信息根本不起作用。我使用以下命令创建特定于页面的路由: FlowRouter.route('/level/:id'... var id = FlowRouter.getParam('id'); Levels.findOne({_id: id}); 这条路线毫无问题地将我带到相关模板。然后我想从属于那个页面的数据库中获取一些数据。在我的模板助手中,我使用以下内容获取页面id: FlowRouter.r

我正在尝试在我的Meteor应用程序中建立路线。路由工作得非常好,但使用路由路径从数据库获取信息根本不起作用。我使用以下命令创建特定于页面的路由:

FlowRouter.route('/level/:id'...
var id = FlowRouter.getParam('id');
Levels.findOne({_id: id});
这条路线毫无问题地将我带到相关模板。然后我想从属于那个页面的数据库中获取一些数据。在我的模板助手中,我使用以下内容获取页面id:

FlowRouter.route('/level/:id'...
var id = FlowRouter.getParam('id');
Levels.findOne({_id: id});
这将以字符串格式获取
ObjectID()。因此,我尝试在集合中找到
ObjectID()
文档,其中包含以下内容:

FlowRouter.route('/level/:id'...
var id = FlowRouter.getParam('id');
Levels.findOne({_id: id});
但是文档当然没有字符串格式的objectid(否则我们不会称之为“object”id)。因此,它带来了一个未定义的错误。我不想处理创建自己的
\u id
的问题,所以我能做些什么吗


PS:Mongo用于创建带有纯文本的
\u id
s。像我现在用
\u id.\u str
可以得到的东西,但是突然,它生成了
ObjectID()
。我不知道为什么,有什么想法吗?

MongoDB默认使用objectid作为
\u id
s,Meteor默认显式设置GUID字符串

也许您过去使用的是
meteor shell
会话,现在使用的是mongo shell/GUI或
meteor mongo
提示符,这导致创建了
ObjectId
s

如果在开发环境中发生这种情况,您可以再次生成数据

否则,您可以尝试使用
Meteor.uuid()
为数据生成新的
\u id
s

如果要使用
ObjectId
作为特定集合的默认值,可以将其构造函数的选项指定为
'MONGO'

如果您拥有
ObjectId
的字符串内容,并希望对其进行转换,则可以发出

let _id = new Mongo.ObjectID(my23HexCharString);

据我记忆所及(2.4之前),MongoDB默认使用
ObjectId
s,Meteor默认显式设置GUID字符串。也许您过去使用的是
meteor shell
,而现在使用的是mongo shell/GUI或
meteor mongo
提示符,这导致了
ObjectId
s。有什么理由不从meteor shell/代码中再次创建数据并完全避免这个问题吗?非常感谢!这立刻解决了我的问题。如果您将此评论作为答案,我可以将其标记为解决方案。