繁体   English   中英

Mongoose find() 方法不适用于查询参数

[英]Mongoose find() method not working with query parameters

我正在尝试使用 Node Js 和 mongoose 在 mongodb 中查找特定文档。

但是当我按照代码片段运行时,我没有得到数据库的响应。

 const express = require("express"); const router = express.Router(); const Vehicle = require("../db/models/vehicle"); //api to get single vehicle data router.get("/vehicle", async (req, res, next) => { try { const { name } = req.query; console.log(name); const vehicle = await Vehicle.find({ name: name }); res.status(200).json(vehicle); } catch (error) { res.status(500).json({ message: error }); } });

[没有回应的邮递员图片][1]

但是当我按照代码片段运行时,我得到了数据库的响应。

 const express = require("express"); const router = express.Router(); const Vehicle = require("../db/models/vehicle"); //api to get single vehicle data router.get("/vehicle", async (req, res, next) => { try { const vehicle = await Vehicle.find({ name: "BMW II" }); res.status(200).json(vehicle); } catch (error) { res.status(500).json({ message: error }); } });

[带回复的邮递员图片][2] 我该怎么办? [1]: https://i.stack.imgur.com/7svLJ.png [2]: https://i.stack.imgur.com/ZgxRa.png

正如所看到,您正在将查询作为name="BMW II"发送,然后在服务器中您的 name 变量将设置为'"BMW II"'因此您不会得到正确的结果。

//your req will have a field like this
req = {query: { name: '"BMW II"' },...}

发送查询字符串时,即使它是字符串,也不要用引号引起来。 express 中的查询字符串在后端默认标识为字符串。
只需像name=BMW II一样发送,您的 name 变量将被设置为'BMW II'

req = {query: { name: 'BMW II' },...}

如果您发送一个数字作为查询字符串,比如num=5那么在后端,如果您愿意对其进行计算,您将把它解析为 integer,因为它是从req.query接收到的字符串

req = {query: { num: '5' },...}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM