我正在创建一个rest api来处理数据库中的数据,到目前为止,数据库连接良好,错误来自请求。
这是我正在使用的代码。第一个文件是 index.js
const express = require('express');
const app = express(); const mongoose = require('mongoose'); //const dotenv = require('dotenv');
//import routes authRoute = require('./routes/auth');
//dotenv.config()
//connect to db
mongoose.connect('mongodb+srv://Doe:abcdef@cluster0-pqcka.mongodb.net/<dbname>?retryWrites=true&w=majority', { useNewUrlParser: true , useUnifiedTopology: true }, ()=>console.log('connected to db'))
//connecting to middleware app.use(express.json());
//route middlewares
app.use('/api/user', authRoute);
app.listen(3000,()=>console.log('The server is up and running'));
我还有另一个名为 User.js 的文件,该文件存储应该存储在数据库中的值,即名称和电子邮件。这是文件
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
**name**:{
type:String,
required:true,
min:6,
max:255 },
**email**:{
type:String,
required:true,
max:255,
min:6 },
**password**:{
type:String,
required:true,
max:1024,
min:6 },
date:{
type:Date,
default:Date.now }
});
module.exports = mongoose.model('User',userSchema)
最终文档是我存储数据的Auth.js,这是文件
还有一个带有数据模式的文档
const router = require('express').Router();
const User = require('../models/User');
router.post('/register',async(req,res)=>{
const user = new User({ name: req.body.name, email: req.body.email, password: req.body.password
}); try{ const savedUser = await user.save(); res.send(savedUser); }catch(err){ res.status(400).send(err); } }); module.exports= router;
到目前为止,这些是我拥有的代码。它可以按预期工作,即使在控制台中,它也会输出已连接到数据库的信息,因此连接没有错误。我用来发送帖子请求的路径是
http:// localhost:3000 / api / user / register
我得到的结果是
{
"errors": { "name": { "properties": { "message": "Path name is required.", "type": "required", "path": "name" }, "kind": "required", "path": "name" }, "email": { "properties": { "message": "Path email is required.", "type": "required", "path": "email" }, "kind": "required", "path": "email" }, "password": { "properties": { "message": "Path password is required.", "type": "required", "path": "password" }, "kind": "required", "path": "password" } }, "_message": "User validation failed", "message": "User validation failed: name: Path name is required., email: Path email is required., password: Path password is required." }
我希望它输出为{ “ _id”:“ 12345677763”, “ name”:“ john doe”, “ password”:“密码”, “ date”:“日期” }这样的事情
{
"_id":"12345677763",
"name":"john doe",
"password":"apassword",
"date":"The date"
}
代码看起来不错,但我无法确切指出如何解决错误,希望能对代码有所帮助。
答案 0 :(得分:1)
确定要添加body-parser中间件吗?如果没有,请在下面添加此行
const express = require('express');
const app = express();
const mongoose = require('mongoose');
//Use below line
app.use(express.urlencoded({extended: false}));