如何使用mongoose在Postman中实现查询参数

时间:2018-04-14 19:36:19

标签: javascript node.js mongodb rest express

我有一个包含驱动程序架构的driver.js。还有driverController.js,它包含我的rest方法。 GET,POST,DELETE和PUT。

我想做的是

GET - http://localhost:3000/drivers?available=true

让它返回所有可用的驱动程序。

我的驱动程序架构看起来像这样:

var mongoose = require('mongoose');
var DriverSchema = new mongoose.Schema({
    name: String,
    available: Boolean,
    latitude: Number,
    longitude: Number
});
mongoose.model('Driver', DriverSchema);
module.exports = mongoose.model('Driver');

我看了一些documentation,但我还没有做任何事情。

这是我尝试添加参数的GET方法

// GETS ALL DRIVERS FROM THE DATABASE
router.get('/', function (req, res) {
    Driver.find({}, function (err, driver) {
        if (err) return res.status(500).send("There was a problem finding the drivers.");
        var available = req.query.available;
        if (available == driver.available )
            res.status(200).send(available );
        else
            res.status(200).send("Nice! " + driver.available);
    });
});

这种比较并没有奏效。它总是转到else语句。我不太清楚为什么,但输出是"很好!未定义"即使我的数据库中有很多驱动程序,如果我只放入else语句中     res.status(200).send(" Nice!" + driver); 然后它给了我驱动程序列表。

尽管如此,我希望能够使用查询参数来查找驱动程序。

任何提示或提示都会非常感激,因为这是一个项目,我之前从未使用过restAPI或javascript。谢谢!

注意:猫鼬,快递。正在使用node.js和mongoDB。

1 个答案:

答案 0 :(得分:0)

  

如果我只放入else语句res.status(200).send(“Nice!”+ driver);然后它给了我驱动程序列表。

这是一个驱动程序列表,if (available == driver.available )您将boolean与一组对象进行比较,

而不是提取所有驱动程序并检查它们是否有availabe == true,而是将条件添加到.find()并返回结果:

// GETS ALL DRIVERS FROM THE DATABASE
router.get('/', function (req, res) {
    Driver.find({ available : req.query.available }, function (err, drivers) {
        if (err) return res.status(500).send("There was a problem finding the drivers.");
        res.status(200).send(drivers);
    });
});

编辑:

您可以根据查询字符串添加过滤器:

// GETS ALL DRIVERS FROM THE DATABASE
    router.get('/', function (req, res) {
        var params = {};
        Object.keys(req.query).forEach((v, k) => params[k] = v);

        Driver.find(params, function (err, drivers) {
            if (err) return res.status(500).send("There was a problem finding the drivers.");
            res.status(200).send(drivers);
        });
    });

拥有?name=Wario&available=true会创建{ name : 'wario', available : true之类的对象并将其传递给.find()