TypeError : impossible d'appeler le constructeur de classe ObjectId sans "nouveau"
P粉399090746
P粉399090746 2024-01-29 08:42:04
0
1
316

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粉399090746
P粉399090746

répondre à tous(1)
P粉692052513

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" });
  }
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!