node.js - (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,该字符串是如何到达那里的?
解决方案
嗯,这很简单!在我server.js
处理 POST 请求的文件中,我根本没有正确导入 User 模型,我从这里开始:
const User = require('./models/user')
对此:
const { User } = require('./models/user')
哎呀!希望这可以让其他人知道如果他们遇到这个问题,他们自己的代码可能出了什么问题。
推荐阅读
- symfony - 如何在 Symfony 5 中集成 Vue
- android - 在长时间运行的线程之间传递数据(不推荐使用 LocalBroadcastManager)
- python - 如何使用现有列在熊猫中创建新列?
- php - PHP打开和关闭文件,但不向其中写入任何内容
- javascript - 在鼠标悬停时使用 CSS 和 jQuery 停止围绕圆圈旋转项目的问题
- html - 并排放置 div 并在其中添加元素
- php - PHP Array 从 API JSON 中提取或提取所有内容以进行 html 输出
- c# - 在 .Net Core 3 api 中使用 ws 安全肥皂服务
- reactjs - 如何使组件可拖动但只能从拖动图标而不是从其他任何地方拖动?
- python - 如何知道python多处理中的进程何时结束