Javascript 插入mongodb冻结,无错误

Javascript 插入mongodb冻结,无错误,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,这是我的数据库连接: app.js const express = require("express"); const app = express(); var { MongoClient } = require("mongodb"); MongoClient.connect("mongodb://localhost:27017", (err, client) => { if (err) return console.log(err); db = client.db("MyDb")

这是我的数据库连接:

app.js

const express = require("express");
const app = express();
var { MongoClient } = require("mongodb");
MongoClient.connect("mongodb://localhost:27017", (err, client) => {
  if (err) return console.log(err);
  db = client.db("MyDb");
  app.listen(5000, () => {
    console.log("listening on 5000");
  });
});
const mongoose = require("mongoose");

const UserSchema = mongoose.Schema({
  name: { type: String, require: true },
  email: { type: String, require: true, unique: true },
  password: { type: String, require: true },
  created_at: Date,
  updated_at: Date
});

const User = mongoose.model("User", UserSchema);

module.exports = User;
这是我的
insert
函数:

router.post(
  "/register",
  [
    check("email")
      .notEmpty()
      .withMessage("Email Field is empty"),
    check("email")
      .isEmail()
      .withMessage("Your email is not valid")
  ],
  function(req, res) {
    const errors = validationResult(req);
    if (errors.length >= 0) {
      res.render("register", { errors: errors.errors });
      console.log(errors.errors);
      return;
    }

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

    const newUser = new User({
      name: name,
      email: email,
      password: password
    });

    newUser.save(function(err) {
      if (err) throw err;

      console.log(true);
    });
  }
);
这是我的用户模型:

User.js

const express = require("express");
const app = express();
var { MongoClient } = require("mongodb");
MongoClient.connect("mongodb://localhost:27017", (err, client) => {
  if (err) return console.log(err);
  db = client.db("MyDb");
  app.listen(5000, () => {
    console.log("listening on 5000");
  });
});
const mongoose = require("mongoose");

const UserSchema = mongoose.Schema({
  name: { type: String, require: true },
  email: { type: String, require: true, unique: true },
  password: { type: String, require: true },
  created_at: Date,
  updated_at: Date
});

const User = mongoose.model("User", UserSchema);

module.exports = User;
终端或浏览器中没有错误。当我点击“注册”按钮时,应用程序将冻结,并且没有任何错误消息


我已经测试了许多有关数据库连接的提示,但无法解决问题。

验证结果()
“从请求中提取验证错误,并将其放在结果对象中。”因此,如果没有任何错误,此对象将不包含错误(您可以使用
.isEmpty()
进行检查),您的端点没有发送响应,让请求者等待。

我发现建议的代码中存在两个顺序的问题,至少我们可以在您的问题中看到这一点:

  • 首先,我找不到mongoose和已建立的mongodb连接之间的任何绑定
  • 其次,您的路由处理程序似乎不会将任何状态代码/内容返回给 来电者
  • 所以,在我看来,你可以

  • 按如下所示更改连接设置
  • 为了将mongoose与MongoDb配置绑定

  • 当新的
    用户
    已保存时,重新尝试状态代码,例如201:
  • 这样可以防止应用程序在收到请求时挂起


    我希望这能帮助你

    因此,一个关键问题是,您没有在用户的save处理程序中发送任何status/response/json/page,因此该端点的使用者将永远不会得到成功或错误响应。成功保存新用户后,您打算发生什么。