传入的参数必须是一个12字节的单个string
mongoDB集合包含以下数据
db.stack.find() { "_id" : "8GieRu" }
_id不是单个12字节的string,
根据[ObjectID] [1]的MongoDB文档, id(string) – 可以是24字节的hexstring,12字节的二进制string或数字。
使用Mongoose,可以使用这个Json来访问这个集合
{"_id" : new mongoose.Types.ObjectId("8GieRu")}
并抛出下面的错误
/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35 throw new Error("Argument passed in must be a single String of 12 bytes or ^ Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters at new ObjectID (/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:35:11) [1]: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
mongoose是严格检查固定长度的ObjectId,我怎样才能通过给定的长度mongoose通过Object_id
你在这里混合两个概念。
虽然“_id”可以具有任何值(甚至像{firstName:'Foo',lastName:'Simpson'}
这样的子文档{firstName:'Foo',lastName:'Simpson'}
,但是“ObjectId”具有固定的一组types,但有一些限制,因为错误消息是正确的。
所以你的陈述应该是
{'_id':'putWhatEverYouWantHere'}
我的路由器顺序有问题
app.get('/jobs', controllers.jobs.getAllJobs); app.get('/jobs/karriere', controllers.jobs.getAllJobsXML); app.get('/jobs/:id', controllers.jobs.getJob); app.get('/jobs/:id/xml', controllers.jobs.getJobXML);
我在 / jobs /:id 之后定义了/ jobs / karriere ,所以应用程序认为“karriere”是一个ObjectID并返回了错误。 上面的代码是工作的。