recherche

Maison  >  Questions et réponses  >  le corps du texte

TypeError : impossible d'appeler le constructeur de classe ObjectId sans "nouveau"

J'ai eu cette erreur lorsque j'essaie d'obtenir le document de mongodb J'utilise Mongo pour la première fois, ce serait génial si quelqu'un pouvait m'aider

const express = require("express");
const { ObjectId } = require("mongodb");
const { connectToDb, getDb } = require("./db");

const app = express();

//db connection
let db;
connectToDb((err) => {
  if (!err) {
    app.listen(3000, () => {
      console.log("App listerning on Port :3000");
    });
    db = getDb();
  }
});

//route connections
app.get("/books", (req, res) => {
  let books = [];
  db.collection("books")
    .find()
    .sort({ author: 1 })
    .forEach((book) => books.push(book))
    .then(() => {
      res.status(200).json(books);
    })
    .catch(() => {
      res.status(500).json({ error: "Couldn't fetch the documents" });
    });
});

app.get("/books/:id", (req, res) => {
  db.collection("books")
    .findOne({ _id: ObjectId("req.params.id") })
    .then((doc) => {
      res.status(200).json(doc);
    })
    .catch((err) => {
      res.status(500).json({ error: "could not fetch the document" });
    });
});

Vous voulez savoir comment vous débarrasser de cette erreur et quelles en sont les causes

P粉399090746P粉399090746295 Il y a quelques jours340

répondre à tous(1)je répondrai

  • P粉692052513

    P粉6920525132024-01-30 00:51:48

    Essayez le code ci-dessous, cela a fonctionné pour moi, stockez simplement le nouveau ObjectId() dans la variable (id), puis accédez à la variable à l'intérieur de la méthode comme indiqué ci-dessous

    const { ObjectId } = require("mongodb");
    
    app.get("/books/:id", (req, res) => {
      const id = new ObjectId(req.params.id);
    
      if (ObjectId.isValid(id)) {
        db.collection("books")
          .findOne({ _id: id })
          .then((doc) => {
            res.status(200).json(doc);
          })
          .catch((err) => {
            res.status(500).json({ error: "Could not fetch the documents" });
          });
      } else {
        res.status(500).json({ error: "Not a valid doc id" });
      }
    });

    répondre
    0
  • Annulerrépondre