查询仅在mongodb类型为字符串时返回文档

时间:2019-04-25 14:15:33

标签: node.js mongodb express

我正在尝试通过邮递员将带有特定学生编号的文件退还给我。当前,如果学生编号的类型为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

2 个答案:

答案 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) },
] }