【问题标题】:how to save data into mongodb using express?如何使用express将数据保存到mongodb中?
【发布时间】:2022-02-08 22:24:40
【问题描述】:

尝试使用 express 和 MongoDB 创建 signinsignup。在邮递员中,数据完美传递,但无法将数据保存到 mongoDB 集群中。 在这个文件中创建了到数据库的连接,并且也混淆了我是否连接到数据库 在这个文件中,我为要提供的用户详细信息创建了架构

//Index.js


const express = require("express");
const mongoose = require("mongoose");
const app = express();
const dotenv = require("dotenv");

dotenv.config();

const db = process.env.DATABASE;

mongoose.connect(db, { useNewUrlParse: true }, () =>
  console.log("connected to db")
);



//midlewares
app.use(express.json());

//importing routes

const authRoute = require("./routes/auth");

//route middle wares
app.use("/api/user", authRoute);

app.listen(3000, () => console.log("gg server is running"));



//User.js


const mongoose = require("mongoose");

const { Schema } = mongoose;

const userSchema = new Schema({
  name: {
    type: String,
    max: 32,
    required: true,
    min: 6,
  },

  email: {
    type: String,
    required: true,
    max: 32,
  },
  password: {
    type: String,
    max: 1022,
    min: 8,
    required: true,
  },

  date: {
    type: Date,
    default: Date.now,
  },
});

module.exports = mongoose.model("User", userSchema);




//Auth.js


const router = require("express").Router();
const User = require("../model/User");

router.post("/register", (req, res) => {
  const user = new User({
    name: req.body.name,
    email: req.body.email,
    password: req.body.password,
  });

  const name = {
    name: req.body.name,
    email: req.body.email,
  };

  res.send(user);

  user.save();
});
module.exports = route[![enter image description here][1]][1]r;

【问题讨论】:

    标签: javascript node.js mongodb express mern


    【解决方案1】:

    第一步

    首先,您应该在连接 MongoDB 后创建一个服务器。所以,把你的服务器逻辑放在mongoose.connectconnect 里面。这将确保当您尝试创建新用户时,MongoDB 已经连接。

    mongoose.connect(db, { useNewUrlParse: true }, () =>
      console.log("connected to db");
    
      //midlewares
      app.use(express.json());
    
      //importing routes
    
      const authRoute = require("./routes/auth");
    
      //route middle wares
      app.use("/api/user", authRoute);
    
      app.listen(3000, () => console.log("gg server is running"));
    );
    

    第 2 步

    使用create方法创建新的用户文档:

    router.post("/register", async (req, res) => {
      const user = await User.create({
        name: req.body.name,
        email: req.body.email,
        password: req.body.password,
      });
    
      return res.status(200).json(user);
    });
    

    【讨论】:

    • 现在,它没有发回响应
    • 你能再试一次吗?我更新了我的答案。只需复制/粘贴整个 register 端点处理程序。
    • 现在,ValidationError:用户验证失败:密码:需要路径 password。发生此错误。我很困惑,因为我是 mern 应用程序的新手
    • 这意味着您没有正确传递password。尝试在处理程序的第一行添加console.log(req.body),看看req.body 中传递了什么。
    猜你喜欢
    • 2021-07-10
    • 2017-05-12
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2019-11-03
    • 1970-01-01
    相关资源
    最近更新 更多