Rumah  >  Soal Jawab  >  teks badan

Ralat dalam mongodb: "Route.post() menjangkakan fungsi panggil balik tetapi menerima satu"

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粉242535777P粉242535777182 hari yang lalu329

membalas semua(2)saya akan balas

  • P粉457445858

    P粉4574458582024-04-03 00:56:11

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

    balas
    0
  • P粉099145710

    P粉0991457102024-04-03 00:52:52

    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;

    balas
    0
  • Batalbalas