Rumah  >  Soal Jawab  >  teks badan

TypeError: Tidak boleh memanggil ObjectId pembina kelas tanpa 'baru'

Saya mendapat ralat ini apabila saya cuba mendapatkan dokumen daripada mongodb Saya menggunakan mongo buat kali pertama, alangkah baiknya jika sesiapa boleh membantu saya

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" });
    });
});

Nak tahu cara hilangkan ralat ini dan puncanya

P粉399090746P粉399090746264 hari yang lalu314

membalas semua(1)saya akan balas

  • P粉692052513

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

    Cuba kod di bawah, ia berfungsi untuk saya, cuma simpan ObjectId() baharu dalam pembolehubah (id) dan kemudian akses pembolehubah di dalam kaedah seperti yang ditunjukkan di bawah

    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" });
      }
    });

    balas
    0
  • Batalbalas