gpt4 book ai didi

javascript - Express 路由器无法识别 Mongoose 模型

转载 作者:行者123 更新时间:2023-11-30 20:07:14 24 4
gpt4 key购买 nike

我正在开发一个 node.js 应用程序,每次运行这段代码时,它都会弹出一个引用错误,提示未定义 Post。当我将发布路由放入 app.js 而不是 submit.js 时,它工作正常。这让我相信这是因为 submit.js 没有“看到”app.js 中定义的模型。我是 Web 开发的新手,所以我可能缺少一些非常基本的东西。

app.js

var express = require('express');
var mongoose = require('mongoose');

var submitRouter = require('./routes/submit');
var app = express();

mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/posts");

//Mongoose Schema
var postSchema = new mongoose.Schema({
username: String,
date: Date,
title: String,
link: String,
text: String,
votes: Number,
community: String
});
var Post = mongoose.model("Post", postSchema);

app.use('/submit', submitRouter);

module.exports = app;

submit.js

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

router.post('/', function(req, res, next){
var newPost = new Post(req.body);
newPost.save()
.then(item => {
res.json(newPost);
})
.catch(err => {
res.status(400).send("unable to save to database");
});
});

module.exports = router;

最佳答案

Post is not defined 这是因为你没有像在 App.js 中那样在 submit.js 中定义 Mongoose 模式。

您正在使用新的 Post 创建一个 Post 实例,但 submit.js 中不存在该 Post

我建议您将架构放在单独的文件中,然后将其导入 submit.js

创建一个名为 schema 的文件夹,并在此文件夹中创建一个名为 PostSchema.js 的文件

PostSchema.js

   var mongoose = require('mongoose');
//Mongoose Schema
var postSchema = new mongoose.Schema({
username: String,
date: Date,
title: String,
link: String,
text: String,
votes: Number,
community: String
});
var Post = mongoose.model("Post", postSchema);
module.exports = Post;

在 submit.js 中导入 post schema

  var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Post = require('./schema/PostSchema.js');
router.post('/', function(req, res, next){
var newPost = new Post(req.body);
newPost.save()
.then(item => {
res.json(newPost);
})
.catch(err => {
res.status(400).send("unable to save to database");
});
});

module.exports = router;

顺便说一下,这不是 Express Router 的问题。

关于javascript - Express 路由器无法识别 Mongoose 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com