Я пытаюсь вернуть мне документ с конкретным номером студента с почтальоном. В настоящее время он ничего не возвращает, если тип номера студента — Int, но если я изменю его на String, он будет работать, как задумано. Я только недавно начал, как вы, наверное, видите, поэтому, пожалуйста, будьте со мной полегче.
Вот код
app.get("/students/:snumber", function (req, res, next) {
console.info('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.info(result)
res.send(result)
})
})
});
{ "студенческий_номер": 1, "first_name": "Жанет", "last_name": "Пенддрет", "электронная почта": "[email protected]", "женский пол" }
Изображение, показывающее некоторые документы, где 1 и 3 — это String, а 2 и 4 — как Int.
@James Добавил кое-что, что может помочь





Параметры URL-адреса всегда будут установлены как строка, поэтому snumber необходимо преобразовать в целое число, т.е.
const query = { student_number: parseInt(req.params.snumber, 10) }
А, понял. Спасибо!
Преобразования значения с помощью Number(v) или parseInt(v, 10) будет достаточно.
Кроме того, если вы хотите сопоставить оба случая, вы можете обернуть его внутри $or, например:
const query = { $or: [
{ student_number: req.params.snumber },
{ student_number: Number(req.params.snumber) },
] }
Можете ли вы предоставить пример кода и пример документа о том, как он хранится в MongoDB?