我正在NodeJs应用程序它的博客应用程序工作。我试图将文章保存在数据库中,我提交表单后得到这个错误:
TypeError: Post is not a constructor
索引.html
<form action="/admin/posts/create" method="post">
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" name="title" id="title" placeholder="Enter The Title">
</div>
<div class="form-group">
<label for="status">Status</label>
<select name="status" id="status" class="form-control">
<option value="public">Public</option>
<option value="private">Private</option>
<option value="draft">Draft</option>
</select>
</div>
<div class="form-group">
<label for="description">Content</label>
<textarea name="description" id="description" class="form-control" placeholder="Enter your content here" rows="5"></textarea>
</div>
<button class="btn btn-outline-success btn-lg" type="submit">Create Post</button>
</form>
这里是控制器部分
管理控制器.js
const Post = require('../models/postModel').Post;
module.exports = {
index: (req, res) => {
res.render('admin/index');
},
getPosts: (req, res) => {
res.render('admin/posts/index');
},
submitPosts: (req, res) => {
const newPost = new Post({
title: req.body.title,
description: req.body.description,
status: req.body.status
});
newPost.save().then(post => {
req.flash('success-message', 'Post created successfully.');
res.redirect('/admin/posts');
});
},
createPosts: (req, res) => {
res.render('admin/posts/create');
}
};
我不知道为什么我得到这个错误作为导入模型
const Post = require('../models/postModel').Post;
任何帮助都将不胜感激。
4条答案
按热度按时间zu0ti5jz1#
我不得不改变
到
我的代码运行良好。
whit
.Post
我原以为它会像对象一样使用它,但它只是作为导入它就行了const Post = require('../models/postModel');
lyfkaqu12#
我有同样的错误,我做错的只是一个错字。我写了
module.export = Post;
而不是module.exports = Post;
eimct9ow3#
原因可能是您输入错误。
mongoose.model("Post" , postSchema);
如果您使用类似的内容导出,则您的导入错误。请改为使用此内容导入const Post = mongoose.model("Post");
它确实解决了我的错误
vi4fp9gy4#
以防您不知道,
const
的意思是“常量”,用于不可变的变量;它并不意味着constructor
,就像你在暗示的那样。抛出错误的部分是
这正是它所告诉你的,
Post
不是一个构造函数,所以你不能使用new
关键字创建一个对象。我们需要查看'models/postModel/'文件中Post
的定义,以确切地知道问题是什么。