【问题标题】:Getting TypeError: User is not a constructor when testing user add with API获取 TypeError:使用 API 测试用户添加时,用户不是构造函数
【发布时间】:2021-05-17 19:54:16
【问题描述】:

我正在尝试使我的后端与 MongoDB ATLAS 一起工作。 我使用 express、mongoose 和 node.js 进行测试以及尝试测试我的 API 路由(在本例中是添加用户)

我的代码如下:

users.js

const router = require('express').Router();
const { Router } = require('express');
let User = require('../models/user.model');

router.route('/').get((req, res) => {
  User.find()
    .then(users => res.json(users))
    .catch(err => res.status(400).json('Error: ' + err));
});

router.route('/add').post((req, res) => {
  const username = req.body.username;

  const newUser = new User({username});

  newUser.save()
    .then(() => res.json('User added!'))
    .catch(err => res.status(400).json('Error: ' + err));
});


module.exports = router

user.model.js

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const userSchema = new Schema({
  username: {
    type: String,
    required: true,
    unique: true,
    trim: true,
    minlength: 3
  },
}, {
  timestamps: true,
});

const User = mongoose.model('User', userSchema);

module.exports = User;

server.js

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
  console.log("MongoDB database connection established successfully");
})

const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');

app.use('/exercises', exercisesRouter);
app.use('/users', usersRouter);

app.listen(port, () => {
    console.log(`Server is running on port: ${port}`);
});

当我通过 POST 使用邮递员对此进行测试时,我收到以下错误:我收到以下错误:TypeError: User is not a constructor

该帖子通过端口 5000 发送到 http,原始 json 正文为“用户名”:“blahblahblah”

你能帮忙吗?

【问题讨论】:

  • 试试:User.create({username}) 应该不需要再做一个 .save 了。
  • with newUser.create({username}) 我在 POST 中得到相同的结果。
  • 显示console.log(req.body)的结果
  • 这是 { username: 'quincy' } 这是我在 POST 中以 JSON 格式发送的内容
  • 否,在 add 路由中写入 console.log(req.body),然后显示结果可能 req.body 为 null

标签: javascript node.js express mongoose


【解决方案1】:

我不确定发生了什么,但今天我剪切并粘贴了所有代码,API 开始正常工作。现在我可以毫无问题地添加用户了。

可能是一个小故障,但目前还不确定。

【讨论】:

    猜你喜欢
    • 2017-08-02
    • 2017-04-08
    • 1970-01-01
    • 2018-08-22
    • 2021-02-06
    • 2018-04-09
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多