Метод findOne Mongoose с условием $ или выдает ошибку - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить данные из mongodb.В настоящее время у меня есть файл, из которого я впервые получаю Id, с помощью которого я хочу найти mongodb.Запрос выдает ошибку, когда первое условие не выполняется, и пытается выполнить поиск, используя второе условие.Как мне решить эту проблему, пожалуйста?

Я проверил это , но здесь дело обстоит иначе

Пример значения, извлеченного из файла

 let idValue = student_id ? student_id : id
 idValue = stu_367

Пример структуры БД

  const Student = new Schema({
      id: Number,
      studentId: String,
      firstName: String
      lastName: String,
      .....
  })

  let studentInfo = await Student.findOne({
         $or: [{"studentId": `${idValue}` }, { "id": idValue }
  }) 

Я получаю эту ошибку Cast to number failed for value "stu_367" at path "id" for model "Student"

1 Ответ

0 голосов
/ 19 сентября 2018

Схема учащегося, которую вы определили, говорит, что типом идентификатора является Number, поэтому при выполнении запроса вы предоставляете строковое значение в качестве id, поэтому вы должны использовать тип String вместо Number для id в схеме следующим образом:

const Student = new Schema({
      id: String,
      studentId: String,
      firstName: String
      lastName: String,
      .....
  })

  let studentInfo = await Student.findOne({
         $or: [{"studentId": `${idValue}` }, { "id": idValue }
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...