从 URL 中获取一个数字,并在节点 js 查询中使用它



所以我从我的URL中获取了一个包ID号,我想用它来查询带有mongodb的数据库。

app.get("/order", (req, res) => {
const packageID = req.query.packId;
console.log("Selected package ID is " + packageID);
mongo.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) =>{
if (err) throw err;
console.log("Does Mongo See our selected package ID of " + packageID);
//select database
const db = client.db("travelexperts");
//grab collection
const collection = db.collection("packages");
//find variable(s) in packages:
collection.find({ PackageId: packageID }).toArray((err, result) =>{
if (err) throw err;
// res.render("order", {
//  packages: result
// });
console.log(result);
client.close();
});
});

res.sendFile(__dirname + "/views/order.html");

因此,如果我在"PackageId:"之后手动放置一个整数值,则上面的代码有效,但是如果我尝试像上述方法一样翻译变量,我的控制台只会在应该打印该信息的位置发出"[]"。如果我使用实际的整数,它确实会打印预期的值数组。日志在那里供我确保从 URL 中提取的值是正确的(确实如此,这些日志出现在我的控制台中),但如果我将"packageID"替换为数字,它只会实际打印数据库中的信息。如何将此变量用作"collection.find({ PackageId:}).toArray"行中的变量?

req.query 上的所有值都将是字符串。如果 mongo 期待一个数字,你需要转换它。像这样的东西:const packageID = Number(req.query.packId)

最新更新