Не возвращаете объекты массива из базы данных Mongodb?

#javascript #reactjs #mongodb

Вопрос:

Это код со стороны сервера, который я создал, но говорит :

 [
  '60c65094d9e1242a18cf84da',
  '60c650d7d9e1242a18cf84db',
  '60c650fbd9e1242a18cf84dc'
]
 

Ошибка: Переданный аргумент должен быть одной строкой из 12 байт или строкой из 24 шестнадцатеричных символов
в новом идентификаторе объекта (F:Web РазработкаНазначениясервер fresh-martnode_modulesbsonlibbsonobjectid.js:59:11)
на объекте (F:Web РазработкаНазначениясервер fresh-martnode_modulesbsonlibbsonobjectid.js:40:43)
в F:Web РазработкаЗаданиясервер fresh-martиндекс.js:49:36
на уровне.ручка [как handle_request] (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизаторуровень.js:95:5)
на следующем (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизатормаршрут.js:137:13)
на маршруте.отправка (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизатормаршрут.js:112:3)
на уровне.ручка [как handle_request] (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизаторуровень.js:95:5)
в F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизаториндекс.js:281:22
на работе.параметры процесса (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизаториндекс.js:335:12)
на следующем (F:Web РазработкаНазначениясервер fresh-martnode_modulesexpresslibмаршрутизаториндекс.js:275:10)

 app.post('/productsByKeys',(req,res)=> {
  console.log("found:ids",req.body)
  const productKeys = req.body;
productCollection.find({_id: {$in :ObjectID(productKeys)}})
  .toArray((err,items)=> {
      res.send(items);
      console.log(" found by ids: ",documents)
      console.log("RESPONSE :",err)
  })
})
 

Ответ №1:

Вместо преобразования массива в ObjectId () преобразуйте отдельные элементы внутри массива в ObjectIds.

 const productKeys = req.body;
let convertedKeys = productKeys.map((x) => ObjectID(x));

productCollection.find({_id: {$in :convertedKeys}})

 

Комментарии:

1. Это работает . Спасибо, что помогли мне, мистер «Тушар Шахи».