首页 > 解决方案 > (Mongoose Model) 不是构造函数错误

问题描述

在此先感谢您对我完全难倒的这个琐碎问题的关注。我正在开发 FreeCodeCamp Node.js 和 MongoDB 项目,但在使用 Mongoose 模型时遇到了问题。这是导致问题的 POST 处理程序:

const User = require('./models/user')

...

app.post('/api/exercise/new-user', (req, res) => {
      var newUser = new User({name: req.body.username});
      console.log("newUser", newUser);
      newUser.save();
      res.json({
        message: "New user created!",
        username: newUser.name,
        user_id: newUser._id
      });
    })

这是user.js

const mongoose = require('mongoose');

exports.User = mongoose.model("User", new mongoose.Schema({
  name: { type: String, required: true }
}));

当我发出 POST 请求时会发生什么/api/exercise/new-user,我的浏览器只是显示文本说User is not a constructor这是完整的 Glitch 项目,因此您可以查看上下文的其余部分(没有很多)。如果您在 Glitch 中显示应用程序并使用“创建新用户”输入,您将能够重新创建问题。据我所知,我没有任何奇怪的小写错误,但当然这是你一直想念的东西!

作为第二个问题,我看到这个的方式是如何在浏览器中显示为简单的字符串,而不是在我的控制台或类似的东西中?到目前为止,我知道我发送的唯一响应是 JSON,该字符串是如何到达那里的?

标签: node.jsmongoose

解决方案


嗯,这很简单!在我server.js处理 POST 请求的文件中,我根本没有正确导入 User 模型,我从这里开始:

const User = require('./models/user')

对此:

const { User } = require('./models/user')

哎呀!希望这可以让其他人知道如果他们遇到这个问题,他们自己的代码可能出了什么问题。


推荐阅读