javascript 节点J-类型错误:Post不是构造函数

zhte4eai  于 2023-02-18  发布在  Java
关注(0)|答案(4)|浏览(151)

我正在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;

任何帮助都将不胜感激。

zu0ti5jz

zu0ti5jz1#

    • 更新**

我不得不改变

const Post = require('../models/postModel').Post;

const Post = require('../models/postModel');

我的代码运行良好。
whit .Post我原以为它会像对象一样使用它,但它只是作为导入它就行了
const Post = require('../models/postModel');

lyfkaqu1

lyfkaqu12#

我有同样的错误,我做错的只是一个错字。我写了module.export = Post;而不是module.exports = Post;

eimct9ow

eimct9ow3#

原因可能是您输入错误。
mongoose.model("Post" , postSchema);如果您使用类似的内容导出,则您的导入错误。请改为使用此内容导入const Post = mongoose.model("Post");
它确实解决了我的错误

vi4fp9gy

vi4fp9gy4#

以防您不知道,const的意思是“常量”,用于不可变的变量;它并不意味着constructor,就像你在暗示的那样。
抛出错误的部分是

const newPost = new Post({
        title: req.body.title,
        description: req.body.description,
        status: req.body.status   
    });

这正是它所告诉你的,Post不是一个构造函数,所以你不能使用new关键字创建一个对象。我们需要查看'models/postModel/'文件中Post的定义,以确切地知道问题是什么。

相关问题