抱歉非常新手的问题。我已经设置了Node,Express和MongoDB。我创建了一个基本的路由规则,并试图传递一个参数:
var express = require('express');
var router = express.Router();
router.get('/req_summary/:approved', function(req, res) {
var db = req.db;
db.collection('req_summary').find({approved:req.params.approved}).toArray(function (err, items) {
res.json(items);
});
});
module.exports = router;
Mongo中的文档包含一个字段:
approved:0
来自我的路由器的请求将值视为字符串,因此正在寻找:
approved:"0"
如何将路由器req对象中的参数作为数字而不是字符串传递给Mongo?
答案 0 :(得分:0)
您从HTTP请求收到的所有参数都是字符串,因此您必须将其解析为正确的数据类型/ JSON对象。
在您的情况下,您必须使用parseInt方法或创建一个数字:
var express = require('express');
var router = express.Router();
router.get('/req_summary/:approved', function(req, res) {
var db = req.db;
var approved_value = parseInt(req.params.approved);
// or
// var approved_value = Number(req.params.approved);
db.collection('req_summary').find({"approved":approved_value}).toArray(function (err, items) {
res.json(items);
});
});
module.exports = router;
您可以查看此文档页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
由于在MongoDB的上下文中这是一个非常常见的问题,因此您还必须创建ObjectId,Long或任何其他BSON对象。您可以从bson模块导入它。 (见https://www.npmjs.org/package/bson)