запрос только возвращает документ, если тип mongodb - строка - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь получить документ с определенным номером студента, возвращенный мне с почтальоном. В настоящее время он не возвращает ничего, если тип номера студента - Int, но если я изменю его на String, он будет работать как задумано. Я только недавно начал, как вы, наверное, можете видеть, поэтому, пожалуйста, будьте осторожны со мной

Вот код

app.get("/students/:snumber", function (req, res, next) {
console.log('student number =', req.params.snumber)
next() },

function (req, res, next) {
var query = { student_number: req.params.snumber };

MongoClient.connect('mongodb://localhost:27017/uni', function (err, client) {
if (err) throw err
    var db = client.db('uni')
    db.collection('students').find(query).toArray(function (err, result) {
    if (err) throw err
console.log(result)
res.send(result)
})
})
});

{ «номер студента»: 1, "first_name": "Jeanette", "last_name": "Penddreth", "электронная почта": "jpenddreth0@census.gov", "женский пол" }

Изображение, показывающее некоторые документы, в которых 1 и 3 обозначены как String, а 2 и 4 как Int

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Преобразование значения с использованием Number(v) или parseInt(v, 10) будет достаточно.Кроме того, если вы хотите сопоставить оба случая, вы можете обернуть его внутри $or, например:

const query = { $or: [
 { student_number: req.params.snumber },
 { student_number: Number(req.params.snumber) },
] }
0 голосов
/ 25 апреля 2019

Параметры URL будут всегда быть заданы в виде строки, поэтому snumber необходимо преобразовать в целое число, т.е.

const query = { student_number: parseInt(req.params.snumber, 10) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...