Express 路由器不适用于猫鼬。它说用户未定义
Express router is not working on mongoose. It is saying User is not defined
**App.js Code**
const express = require("express");
const { default: mongoose } = require("mongoose");
const gaming = require("./routes/gaming");
const app = express();
app.use(express.json());
app.use("/", gaming);
const dbConnect = mongoose.connect("mongodb://localhost:27017/Gaming");
const mySchema = new mongoose.Schema({
name: String,
genre: String,
games: String,
})
const User = mongoose.model('gaming', mySchema);
app.listen(8000, ()=>{
console.log("listing at port 8000");
})
***Routes Folder Code***
const express = require("express");
let router = express.Router();
router.post("/gaming", (req,res)=>{
const addingData = new User({
name: req.body.name,
genre: req.body.genre,
games: req.body.games
})
addingData.save((err,result)=>{
if (err = true){
console.log(err);
}else{
console.log("Document dubmited successfully");
}
})
res.send("saved new data");
})
module.exports = router;
我不知道为什么它说 User is not defined 因为我使用 module.exports = router.out 将路由器正确导出到 app.js。我认为 module.export 没有正常工作并且没有将代码带到 app.js 文件中。感谢帮助
而不是
const User = mongoose.model('gaming', mySchema);
尝试使用
const User = (module.exports = mongoose.model('gaming', mySchema));;
因为接受的答案很奇怪,没有解决根本原因。我在这里写我的 2 美分。
默认情况下,Node 按模块分隔代码,这意味着您的应用代码和游戏的路由代码不会 interfere/know 彼此。
要使其正常工作,您 import or require
将其他模块添加到您要使用的模块中。
在您的情况下,您需要将 User 导入游戏路线。
**App.js Code**
const express = require("express");
const { default: mongoose } = require("mongoose");
const gaming = require("./routes/gaming");
const app = express();
app.use(express.json());
app.use("/", gaming);
const dbConnect = mongoose.connect("mongodb://localhost:27017/Gaming");
const mySchema = new mongoose.Schema({
name: String,
genre: String,
games: String,
})
const User = mongoose.model('gaming', mySchema);
app.listen(8000, ()=>{
console.log("listing at port 8000");
})
***Routes Folder Code***
const express = require("express");
let router = express.Router();
router.post("/gaming", (req,res)=>{
const addingData = new User({
name: req.body.name,
genre: req.body.genre,
games: req.body.games
})
addingData.save((err,result)=>{
if (err = true){
console.log(err);
}else{
console.log("Document dubmited successfully");
}
})
res.send("saved new data");
})
module.exports = router;
我不知道为什么它说 User is not defined 因为我使用 module.exports = router.out 将路由器正确导出到 app.js。我认为 module.export 没有正常工作并且没有将代码带到 app.js 文件中。感谢帮助
而不是
const User = mongoose.model('gaming', mySchema);
尝试使用
const User = (module.exports = mongoose.model('gaming', mySchema));;
因为接受的答案很奇怪,没有解决根本原因。我在这里写我的 2 美分。
默认情况下,Node 按模块分隔代码,这意味着您的应用代码和游戏的路由代码不会 interfere/know 彼此。
要使其正常工作,您 import or require
将其他模块添加到您要使用的模块中。
在您的情况下,您需要将 User 导入游戏路线。