gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:36 25 4
gpt4 key购买 nike

我有一个包含驱动程序架构的 driver.js。还有 driverController.js,其中包含我的其余方法。获取、发布、删除和放置。

我想做的是

获取 - 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("很好!"+ driver);然后它给了我驱动程序列表。

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

任何提示或技巧将不胜感激,因为这是一个项目,我以前从未使用过restAPI或javascript。谢谢!

注意: Mongoose , express 。正在使用node.js和mongoDB。

最佳答案

if I only put inside the else statement res.status(200).send("Nice! " + driver); Then it gives me the list of drivers.

它是一个驱动程序列表,其中 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()

关于javascript - 如何使用 mongoose 在 Postman 中实现查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com