【问题标题】:"userdb validation failed: email: Path `email` is required."“userdb 验证失败:电子邮件:需要路径‘电子邮件’。”
【发布时间】:2021-11-02 12:41:47
【问题描述】:

您好,然后我尝试创建新用户时收到错误“消息”:“userdb 验证失败:电子邮件:需要路径 email。”

找不到错误的代码字段

controller.js

const { response } = require('express');
let Userdb = require('../model/model');

// create and save new user object

exports.create = (req, res) => {
  // validate requast
  if (!req.body) {
    res.status(400).send({ message: 'Laukas negali būti tusčias!' });
    return;
  }

  // new user
  const user = new Userdb({
    name: req.body.name,
    email: req.body.email,
    gender: req.body.gender,
    status: req.body.status,
  });

  // save user to database
  user
    .save(user)
    .then((data) => {
      //res.send(data)
      res.redirect('/add-user');
    })
    .catch((err) => {
      res.status(500).send({
        message: err.message || 'Kuriant kūrimo operaciją įvyko klaida',
      });
    });
};

// retrieve and ruturn all users

exports.find = (req, res) => {
  Userdb.find();

  if (req.query.id) {
    const id = req.query.id;

    Userdb.findById(id)
      .then((data) => {
        if (!data) {
          res.status(404).send({ message: 'Nerastas naudotojas su id' + id });
        } else {
          res.send(data);
        }
      })
      .catch((err) => {
        res.status(500).send({ message: 'Error gaunant naudojo id' + id });
      });
  } else {
    Userdb.find()
      .then((user) => {
        res.send(user);
      })
      .catch((err) => {
        res
          .status(500)
          .send({
            message:
              err.message || 'Gaunant naudotojo informaciją įvyko klaida',
          });
      });
  }
};

// update a new user by id

exports.update = (req, res) => {
  if (!req.body) {
    return res
      .status(400)
      .send({ message: 'Atnaujinant duomenis laukai negali būti tušti!' });
  }

  const id = req.params.id;
  Userdb.findByIdAndUpdate(id, req.body, { useFindAndModify: false })
    .then((data) => {
      if (!data) {
        res
          .status(404)
          .send({
            message: `Negalima atnaujinti naudotojo su ${id}.Naudotojas nerastas!`,
          });
      } else {
        res.send(data);
      }
    })
    .catch((err) => {
      res.status(500).send({ message: 'Error atnaujinti nepavyko' });
    });
};

// Delete a user with user id

exports.delete = (req, res) => {
  const id = req.params.id;

  Userdb.findByIdAndDelete(id)
    .then((data) => {
      if (!data) {
        res
          .status(404)
          .send({ message: `Negalima ištrinti su id ${id}. Blogas id` });
      } else {
        res.send({
          message: 'Naudotojas ištrintas!',
        });
      }
    })
    .catch((err) => {
      res.status(500).send({
        message: 'Negalima ištrinti naudotojo su id=' + id,
      });
    });
};

model.js;

const mongoose = require('mongoose');

let schema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  gender: String,
  status: String,
});

const Userdb = mongoose.model('userdb', schema);

module.exports = Userdb;

路由器.js;

const express = require('express');
const route = express.Router();

const services = require('../services/render');
const controller = require('../controller/controller');

/**
 * @description Root Route
 * @method GET/
 */

route.get('/', services.homeRoutes);

/**
 * @description add users
 * @method GET/ add-user
 */

route.get('/add-user', services.add_user);

/**
 * @description for update user
 * @method GET/ update-user
 */

route.get('/update-user', services.update_user);

// API

route.post('/api/users', controller.create);
route.get('/api/users', controller.find);
route.put('/api/users/:id', controller.update);
route.delete('/api/users/:id', controller.delete);

module.exports = route;

render.js;

const axios = require('axios');

exports.homeRoutes = (req, res) => {
  // Make a get request to api users
  axios
    .get('http://localhost:3000/api/users')
    .then(function (response) {
      res.render('index', { users: response.data });
    })
    .catch((err) => {
      res.send(err);
    });
};

exports.add_user = (req, res) => {
  res.render('add_user');
};

exports.update_user = (req, res) => {
  res.render('update_user');
};

connection.js;

const mongoose = require('mongoose');

const connectDB = async () => {
  try {
    //mongoDB connection string
    const con = await mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    });

    console.log(`MongoDB connected: ${con.connection.host}`);
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};

module.exports = connectDB;

server.js;

const express = require('express');
const dotenv = require('dotenv');
const morgan = require('morgan');
const bodyparser = require('body-parser');
const path = require('path');

const connectDB = require('./server/database/connection');

const app = express();

dotenv.config({ path: 'config.env' });
const PORT = process.env.PORT || 8080;

//log requests
app.use(morgan('tiny'));

// mongoDB connection

connectDB();

// parse request to body-parses
app.use(bodyparser.urlencoded({ extended: true }));

//set view engine
app.set('view engine', 'ejs');
//app.set("views",path.resolve(__dirname,"views/ejs"))

//load assets
app.use('/css', express.static(path.resolve(__dirname, 'assets/css')));
app.use('/img', express.static(path.resolve(__dirname, 'assets/img')));
app.use('/js', express.static(path.resolve(__dirname, 'assets/js')));
//css/style.css

//load routes

app.use('/', require('./server/routes/router'));

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

【问题讨论】:

  • 添加这个中间件app.use(bodyParser.json());
  • 我需要输入这段代码吗?
  • app.use(bodyparser.urlencoded({extended:true}))的上级
  • 感谢它的工作,但是现在当我在 mongodb 上按保存时,我看到数据已创建,但在页面上没有显示任何内容,你知道为什么吗?
  • 保存后是否再次获取数据?

标签: javascript node.js mongodb express


【解决方案1】:

添加这个中间件app.use(bodyParser.json()); app.use(bodyparser.urlencoded({extended:true})) 的上层 从前面获取数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2015-06-15
    • 1970-01-01
    • 2012-04-17
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多