我正在开发一个节点.js应用程序,每次运行此代码时,它都会弹出一个引用错误,指出未定义 Post。当我将邮政路由放入应用程序中时.js而不是提交.js,它工作正常。这让我相信这是因为提交.js没有"看到"app.js中定义的模型。我对 Web 开发非常陌生,所以这可能是我缺少的非常基本的东西。
应用.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;
提交.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;
未定义 这是因为您没有像在 App.js 中那样在提交中定义猫鼬架构.js就像在 App 中那样。
您正在使用新帖子创建要发布的实例,但提交中不存在该帖子.js
我建议您将架构放在单独的文件中,然后将其导入提交.js
创建一个名为 schema 的文件夹,并在此文件夹中创建一个名为 PostSchema 的文件名.js
后架构.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;
在提交中导入帖子架构.js
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;
顺便说一下,这不是高速路由器的问题。