从Node Express向Mongo传递请求参数

时间:2014-11-03 23:48:22

标签: node.js mongodb

抱歉非常新手的问题。我已经设置了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?

1 个答案:

答案 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