猫鼬 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
正如 this 所见,您将以 name="BMW II"
的形式发送查询,然后在服务器中您的名称变量将设置为 '"BMW II"'
因此您将无法获得正确的结果。
//your req will have a field like this
req = {query: { name: '"BMW II"' },...}
发送查询字符串时,即使它是字符串,也不要用引号引起来。 express 中的查询字符串在后端默认被标识为字符串。
只需像 name=BMW II
一样发送,您的名称变量将设置为 'BMW II'
.
req = {query: { name: 'BMW II' },...}
如果您要发送一个数字作为查询字符串,请说 num=5
然后在后端,如果您愿意对它进行计算,您将把它解析为一个整数,因为它是作为字符串从req.query
req = {query: { num: '5' },...}
我正在尝试使用 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
正如 this 所见,您将以 name="BMW II"
的形式发送查询,然后在服务器中您的名称变量将设置为 '"BMW II"'
因此您将无法获得正确的结果。
//your req will have a field like this
req = {query: { name: '"BMW II"' },...}
发送查询字符串时,即使它是字符串,也不要用引号引起来。 express 中的查询字符串在后端默认被标识为字符串。
只需像 name=BMW II
一样发送,您的名称变量将设置为 'BMW II'
.
req = {query: { name: 'BMW II' },...}
如果您要发送一个数字作为查询字符串,请说 num=5
然后在后端,如果您愿意对它进行计算,您将把它解析为一个整数,因为它是作为字符串从req.query
req = {query: { num: '5' },...}