Rumah > Soal Jawab > teks badan
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粉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" }) } }
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;