我无法从 mongoDb ObjectId 类构造函数错误中删除数据

2024-03-15

我写了一个express index.js来在mongodb中进行简单的增删改查操作。该项目是我可以 console.log 作为 mongodb Id 的参数,但是,ObjectId 内置函数给了我一个类构造函数错误,如果没有“new”,它就无法 inboked。

const express = require("express");
const { MongoClient, ServerApiVersion, ObjectId } = require("mongodb");

const cors = require("cors");
const app = express();
const port = process.env.PORT || 5000;

//middleware
app.use(cors());
app.use(express.json());

const uri =
  "mongodb+srv://<hiddenuser>:<hiddenPass>@cluster0.9mathic.mongodb.net/?retryWrites=true&w=majority";
const client = new MongoClient(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  serverApi: ServerApiVersion.v1,
});
const run = async () => {
  try {
    const userCollection = client
      .db("simple-node-mongo-server")
      .collection("mongo_crud_server");

    //post user data in db
    app.post("/users", async (req, res) => {
      const user = req.body;
      console.log(user);
      const result = await userCollection.insertOne(user);
      res.send(result);
    });

    //reading data of user
    app.get("/users", async (req, res) => {
      const query = {};
      const cursor = userCollection.find(query);
      const users = await cursor.toArray();
      res.send(users);
    });

    //deleting a user
    app.delete("/users/:id", async (req, res) => {
      const id = req.params.id;
      // console.log('trying to delete', id);
      const query = { _id: ObjectId(id) };
      console.log(query)
      // const result = await userCollection.deleteOne(query);
      // console.log(result);
      // res.send(result);
    });

  } finally {
  }
};
run().catch(console.dir);

//raw api hit
app.get("/", (req, res) => {
  res.send("Hello world");
});

app.listen(port, () => {
  console.log(`listening port 5000`);
});

它显示的错误

C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\index.js:45
      const query = { _id: ObjectId(id) };
                           ^

TypeError: Class constructor ObjectId cannot be invoked without 'new'
    at C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\index.js:45:28
    at Layer.handle [as handle_request] (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\route.js:144:13)
    at Route.dispatch (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\route.js:114:3)
    at Layer.handle [as handle_request] (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\index.js:284:15
    at param (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\index.js:365:14)
    at param (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\index.js:376:14)
    at Function.process_params (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\index.js:421:3)
    at next (C:\Users\sdman\OneDrive\Documents\GitHub\mongo-project\mongo_crud_server\node_modules\express\lib\router\index.js:280:10)

Node.js v18.13.0
[nodemon] app crashed - waiting for file changes before starting...

我尝试过 'ObjectID = require('mongodb').ObjectID,'


要解决该错误,您可以添加new之前的关键字ObjectId创建该类的新实例:

const query = { _id: new ObjectId(id) };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我无法从 mongoDb ObjectId 类构造函数错误中删除数据 的相关文章

随机推荐