Mongo函数更新错误记录



我的问题是,当我试图使用一些API路由,我已经创建了更新,删除,或从我的MongoDB获取任何单独的记录,它似乎忽略了传递给它的id,并在列表中的第一个记录上执行操作。下面是我的数据库中的一个记录示例:

[
{
"_id": "614271f38e5401f65dc86ee1",
"name": "Test2",
"title": "Test2"
},
{
"_id": "614271fb8e5401f65dc86ee2",
"name": "Test3",
"title": "Test3"
},
{
"_id": "614272018e5401f65dc86ee3",
"name": "Test4",
"title": "Test4"
}
]

因此,例如,如果使用Postman,我向http://localhost:5000/api/614272018e5401f65dc86ee3发送DELETE请求,它将删除Test2,然后是Test3,最后是Test4。我不明白为什么它忽略了id参数。以下是我创建的路由:

const express = require("express");
// recordRoutes is an instance of the express router.
// We use it to define our routes.
// The router will be added as a middleware and will take control of requests starting with path /record.
const routes = express.Router();
//This will help us connect to the database
const dbo = require("../../config/db");
routes.get('/test', (req, res) => res.send('tech route testing!'));
// Get
routes.route("/techs").get(function (req, res) {
let db_connect = dbo.getDb("employees");
db_connect
.collection("techs")
.find({})
.toArray(function (err, result) {
if (err) throw err;
res.json(result);
});
});
routes.route("/techs/:id").get((req, res) => {
let db_connect = dbo.getDb("employees");
var myquery = { id: req.body.id };
db_connect
.collection("techs")
.findOne(myquery, function (err, result) {
if (err) throw err;
res.json(result);
});
});
// Create
routes.route("/techs").post(function (req, res) {
let db_connect = dbo.getDb("employees");
let myobj = {
name: req.body.name,
title: req.body.title
};
db_connect.collection("techs").insertOne(myobj, function (err, res) {
if (err) throw err;
});
});
// Update
routes.route("/update/:id").put(function (req, res) {
let db_connect = dbo.getDb("employees");
let myquery = { id: req.body.id };
let newvalues = {
$set: {
name: req.body.name,
title: req.body.title
},
};
db_connect
.collection("techs")
.updateOne(myquery, newvalues, function (err, res) {
if (err) throw err;
console.log("1 document updated");
});
});
// Delete
routes.route("/:id").delete((req, res) => {
let db_connect = dbo.getDb("employees");
var myquery = { id: req.body.id };
db_connect.collection("techs").deleteOne(myquery, function (err, obj) {
if (err) throw err;
console.log("1 document deleted");
});
});
module.exports = routes;

您的delete函数中不是req.body.id而是req.params.id

最新更新