【发布时间】: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