Аргумент, переданный в, должен быть одной строкой из 12 байтов
Коллекция mongoDB содержит следующие данные
db.stack.find()
{ "_id" : "8GieRu" }
_id не является отдельной строкой из 12 байтов,
В соответствии с документом MongoDB [ObjectID] [1], id (строка) - может быть 24-байтная шестнадцатеричная строка, 12-байтная двоичная строка или номер.
Используя 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 фиксированной длины, как я могу передать Object_id с помощью мангуста с заданной длиной
Ответы
Ответ 1
Здесь вы смешиваете две концепции.
В то время как "_id" может иметь любое значение (даже поддокумент, такой как {firstName:'Foo',lastName:'Simpson'}
, "ObjectId" имеет фиксированный набор типов с некоторыми ограничениями, как правильно сообщает сообщение об ошибке.
Итак, ваше утверждение должно быть
{'_id':'putWhatEverYouWantHere'}
Ответ 2
У меня была проблема в моем роутер-порядке:
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/karriere после/jobs/: id, поэтому приложение подумало, что "karriere" является ObjectID и возвращает ошибку. Приведенный выше код является рабочим.
Ответ 3
Убедитесь, что метод, который вы используете в клиентской и серверной части совпадают. Эта ошибка также отображается, когда вы, например, отправляете GET
со стороны клиента и POST
требуется на стороне сервера.
Ответ 4
та же проблема, с которой столкнулся я, но после RND. Я обнаружил, что передал неверный {Id: Undefined}, поэтому возникла проблема, поэтому сначала проверьте свой идентификатор, который вы передали в URL.
Error = "http://localhost:4000/api/deleteBook/Undefined"
Right = "http://localhost:4000/api/deleteBook/5bb9e79df82c0151fc0cd5c8"
Ответ 5
Вы передаете любой
ObjectID undefinded
Если ObjectID не определен, то возникнет эта ошибка.