我正在尝试通过邮递员将带有特定学生编号的文件退还给我。当前,如果学生编号的类型为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”, “性别女” }
Image showing some documents where 1 and 3 are as String & 2 and 4 as Int
答案 0 :(得分:0)
URL参数将总是设置为字符串,因此snumber
需要转换为整数,即
const query = { student_number: parseInt(req.params.snumber, 10) }
答案 1 :(得分:0)
使用Number(v)
或parseInt(v, 10)
转换值就足够了。
另外,如果您想同时匹配这两种情况,则可以将其包装在$or
中,例如:
const query = { $or: [
{ student_number: req.params.snumber },
{ student_number: Number(req.params.snumber) },
] }