Ralat dalam mongodb: "Route.post() menjangkakan fungsi panggil balik tetapi menerima satu"
P粉242535777
P粉242535777 2024-04-02 14:46:18
0
2
470

Ini ialah fail utama saya index.js

type here
const express = require("express");
const app = express();

require("dotenv").config();
const port = process.env.port || 4000;

app.use(express.json());

const createBlog = require("./routes/blogRoutes");

app.use("/santi/api/v1",createBlog);

app.listen(port, () => {
    console.log("App run in 3000 port");
})

const dbConnect = require("./config/database");
dbConnect();

app.get("/", (req,res) => {
    res.send(`<h1>this is homepage</h1>`);
})

Ini adalah laluan saya

const express = require("express");
const router = express.Router();

const {createBlog} = require("../controlers/createBlog");

router.post("/createBlog",createBlog);

module.exports = router;

Ini ialah fail pengawal saya

const createPost = require("../models/post");

exports.post = async (req,res) => {
    try {
        const {title,description} = req.body;
        const response = await createPost.create({title,description});

        res.status(200).json({
            status:true,
            message:"Insert seccessfully",
            data:response
        })
    }
    catch(error) {
        console.error(err);
        res.status(500).json({
            status:false,
            message:error.message,
            data:"Server issue"
        })
    }
}

Ini ialah fail model saya

const mongoose = require("mongoose");

const blogPostSchema = new mongoose.Schema(
    {
        title:{
            type:String,
            required:true,
            maxlength:50
        },
        description:{
            type:String,
            required:true,
            maxlength:50
        }
    }
)

module.exports = mongoose.model("blogPost",blogPostSchema);

Saya memasang nodemon dan mongoose tetapi masih mendapat ralat dalam terminal selepas menulis arahan "npm run dev"

[e-mel dilindungi] Pembangun Nodemon index.js

[nodemon] 2.0.22 【nodemon】Mulakan semula pada bila-bila masa, masukkan rs [nodemon] Laluan pemantauan: . [nodemon] Lihat sambungan: js, mjs, json [nodemon] mula node index.js C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211 buang newError(message); ^

Ralat: Route.post() menjangkakan fungsi panggil balik tetapi mendapat satu [objek tidak ditentukan] di laluan itu. [Sebagai siaran] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterroute.js:211:15) dalam prototaip. [Sebagai catatan] (C:UsersSWETTAOneDriveDesktopblog_backendnode_modulesexpresslibrouterindex.js:521:19) dalam objek. (C:UsersSWETTAOneDriveDesktopblog_backendroutesblogRoutes.js:6:8) dalam Module._compile (node:internal/modules/cjs/loader:1254:14) dalam Module._extensions..js (node:internal/modules/cjs/loader:1308:10) di Module.load(node:internal/modules/cjs/loader:1117:32) dalam Module._load (nod:internal/modules/cjs/loader:958:12) dalam Module.require (nod:internal/modules/cjs/loader:1141:19) apabila diperlukan (nod:internal/modules/cjs/helpers:110:18) dalam objek. (C:UsersSWETTAOneDriveDesktopblog_backendindex.js:9:20)

Apakah penyelesaiannya?

P粉242535777
P粉242535777

membalas semua(2)
P粉457445858

Masalahnya adalah dalam fail pengawal anda, anda mengeksport fungsi yang dipanggil pos dan mengimportnya sebagai createBlog dalam fail laluan anda. Untuk membetulkan kod anda, anda harus mengemas kini pengawal anda dan menamakan semula fungsi untuk createBlog :

const createPost = require("../models/post");

exports.createBlog = async (req,res) => {
    try {
        const {title,description} = req.body;
        const response = await createPost.create({title,description});

        res.status(200).json({
            status:true,
            message:"Insert seccessfully",
            data:response
        })
    }
    catch(error) {
        console.error(err);
        res.status(500).json({
            status:false,
            message:error.message,
            data:"Server issue"
        })
    }
}
P粉099145710

Saya menemui pepijat kecil dalam kod penghala anda.
Anda mengeksport fungsi sebagai kandungan post ,并将其导入路由器中作为 createBlog 。并且您的控制器不会导出任何名为 createBlog dalam pengawal anda, maka persoalannya.

Tukar kod penghala anda kepada:

const express = require("express");
const router = express.Router();

const {post} = require("../controlers/createBlog");

router.post("/createBlog",post);

module.exports = router;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan