Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Javascript Meteor中客户端和服务器上ObjectId之间的差异_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript Meteor中客户端和服务器上ObjectId之间的差异

Javascript Meteor中客户端和服务器上ObjectId之间的差异,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我最近在学习Meteor.js,正在制作一个简单的测试应用程序。我在会话中保存了一个集合的id数组 我有两个系列:Workouts和AssignedWorkouts分配的训练有一个字段,用于存储训练的id Session.get(“assignedWorkouts”)在我的系统和服务器上的行为不同 在服务器上,训练。_id是一个对象(e._ObjectId),但在我的机器上它是一个字符串 这是Test4FaceySpace.meteor.com的控制台 Workouts.findOne()._

我最近在学习Meteor.js,正在制作一个简单的测试应用程序。我在
会话中保存了一个集合的
id
数组

我有两个系列:
Workouts
AssignedWorkouts
<代码>分配的训练
有一个字段,用于存储
训练的
id

Session.get(“assignedWorkouts”)
在我的系统和服务器上的行为不同

在服务器上,
训练。_id
是一个对象(
e._ObjectId
),但在我的机器上它是一个字符串

这是Test4FaceySpace.meteor.com的控制台

 Workouts.findOne()._id
 e._ObjectID {_str: "53188350f47ed90eed042df2", toString: function, equals: function, clone: function, typeName: function…}
 typeof Workouts.findOne()._id
 "object"
这是从我的系统控制台

Workouts.findOne()._id
"58pa4pp3Lgwef7vGA"
typeof Workouts.findOne()._id
"string"
有没有解释为什么会这样?我问过一些高级开发人员,但他们说他们从来没有遇到过这样的问题

因此,我需要维护两个不同版本的代码

请在此处检查已部署的应用程序:


此处代码:

如果您从Meteor插入文档,默认情况下它会获取字符串id。如果从mongo命令行或某个mongo ui插入文档,默认情况下,它会将对象作为id

您可以在meteor中重写此行为,但我建议您尝试使用字符串。您确实丢失了对象id中存在的时间戳,但我告诉您无论如何都要使用显式时间戳


希望能有所帮助。

谢谢。实际上,我在服务器上插入了mongo cli中的所有行。我用不同的url重新部署了应用程序进行测试,现在它可以正常工作了,即
id
是字符串。我如何克服这种行为?我试图在数据库中查找外部插入的对象,因此它对_id使用ObjectId(),但Meteor.Collection.ObjectId(“对象id的值”)返回_str:“我的id”,而不是ObjectId类型