MongoDB Node Express -使用user.save()时无法保存数据

xqnpmsa8  于 2023-11-17  发布在  Go
关注(0)|答案(4)|浏览(145)

虽然这一个完美的工作与 Postman 得到“欢迎消息”和后/登录请求,没有错误,也没有保存数据在mongo云,但显示无法得到响应,在POSTMAN
index.js文件

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

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

dotenv.config();

//Connect To DB
mongoose.connect(process.env.DB_CONNECT,
{ useNewUrlParser: true, useUnifiedTopology: true },
() => console.log("connected to DB")
);

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

//Route Middleware
app.use("/api/user", authRoute);

app.listen(3000, () => console.log("Server up and running on port 3000"));

字符串
用户架构- User.js

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
    name : {
        type: String,
        required: true,
        min: 6,
        max: 50
    },
    email: {
        type: String,
        required: true,
        min: 6,
        max: 25
    }
    ,
    password: {
        type: String,
        required: true,
        min: 6,
        max: 1024
    },
    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", async (req, res) => {
  const user = new User({
    name : req.body.name,
    email: req.body.email,
    password: req.body.password
  });
  console.log("Entering Try Catch");
  try {
    console.log(user.name +" - " + user.email);
      const savedUser = await user.save();
      console.log("saved user = " + savedUser);
      res.send(savedUser);
  } catch (err) {
    console.log(err);
    res.status(400).send(err);
  }
});

router.get("/", (req, res) => {
  res.send("Welcome");
});

router.post("/login", (req, res) => {
  console.log("Console Logged In");
  res.send("Logged In Successful");
});

module.exports = router;


这将是很大的帮助,如果你能让我知道我错了。提前感谢!!
编辑:我得到所有的控制台,直到,进入try catch以及user.name和user.email

bq9c1y66

bq9c1y661#

感谢大家的帮助,这不是代码错误或任何其他错误,因为我发现这一点很奇怪,在Atlas上,我允许访问我当前的IP地址,尽管在将其更改为允许访问所有它正在工作后,它仍然有这个错误,所以我猜这应该是mongo方面的问题,他们应该考虑很少发生这样的事件。

ou6hu8tu

ou6hu8tu2#

提示:首先,您应该始终使用return作为响应。
试试这个:

try {
    const user = await User.create({
        name : req.body.name,
        email: req.body.email,
        password: req.body.password
    });
    return res.send(user);
  } catch (err) {
    return res.status(400).send(err);
  }
});

字符串

aamkag61

aamkag613#

您可能需要为express安装body-parser中间件,以便从req.body获取值
调试console.log(req.body)的一个好方法是查看是否是undefined
详细答案:What does body-parser do with express?

编辑:

最有可能的东西与您的数据库连接是问题,因为我使用您的代码(复制/粘贴),一切都为我工作正常。
您可以在index.js中的mongoose.connect下面添加mongoose.connection.on('error', err => { console.log(err); });来调试mongoose连接,您应该在发出POST请求后等待大约30秒-1分钟。
x1c 0d1x的数据
下面是我的.env文件:DB_CONNECT=mongodb://localhost:27017/test


myzjeezk

myzjeezk4#

经过几天的尝试,我通过重新安排中间件的顺序解决了这个问题

从这里:

app.use(route);
app.use(cors());

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

字符串

对此:

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use(route);
app.use(cors());

相关问题