卡在装载猫鼬 [英] Stuck in loading with mongoose

查看:52
本文介绍了卡在装载猫鼬的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 node.js、mongoose 和 MongoDB 创建一个 Web 应用程序,
我正在尝试加载网页 localhost:8800/api/auth/register,该网页自过去 15 分钟以来一直停留在加载中.

I am trying to create a web-application with node.js, mongoose and MongoDB,
I am trying to load the web-page localhost:8800/api/auth/register which is stuck at loading since past 15 minutes.

VS Code 终端返回以下内容:

VS Code Terminal return the following :

(node:2908) UnhandledPromiseRejectionWarning: MongooseError: Operation `users.insertOne()` buffering timed out after 10000ms
    at Timeout.<anonymous> (E:\Projects\Applications\chitter-chatter\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:185:20)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:2908) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:2908) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:2908) UnhandledPromiseRejectionWarning: MongooseError: Operation `users.insertOne()` buffering timed out after 10000ms
    at Timeout.<anonymous> (E:\Projects\Applications\chitter-chatter\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:185:20)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)
(node:2908) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)

我的脚本如下:

  1. Index.js :

  1. Index.js :

const application = express();
const mongoose = require("mongoose");
const dotenv = require("dotenv");
const helmet = require("helmet");
const morgan = require("morgan");
const userRoute = require("./routes/users");
const authRoute = require("./routes/auth");

dotenv.config();

mongoose.connect(process.env.MONGO_URL, {useNewUrlParser: true, useUnifiedTopology: true}, () => {
    console.log("connected to MongoDB")
});

// middleware 
application.use(express.json());
application.use(helmet());
application.use(morgan("common"));

application.use("/api/users", userRoute);
application.use("/api/auth", authRoute);

application.listen(8800, () => {
    console.log("backend server is running!")
})

  • Auth.js :

  • Auth.js :

    const User = require("../models/User");
    
    // REGISTER
    router.get("/register", async (req, res) => {
        const user = await new User ({
            username: "john",
            useremail: "john@gmail.com",
            userpswrd: "123456"
        })
    
        await user.save();
        res.send("oK")
    });
    
    module.exports = router
    
    

  • 我也将 .env 用于 MONGO VIA URL CONNECTION很抱歉提前为糟糕的写作道歉,我也是新手,所以请纠正我!我知道我犯了很多错误,感谢您真诚的时间奉献和同情

    I am also using .env for MONGO VIA URL CONNECTION Sorry for the bad writing apologies in advance also I am new to this so pls correct me! I know i have done a lot of mistakes, Thanks for u're sincere time dedication and sympathy

    推荐答案

    首先,您必须确保连接到数据库没有任何错误.
    为此,请开始侦听 connect 的回调函数:

    First of all, you must make sure that you are connecting to the database without any error.
    To do this, start listening on connect's callback function:

    try {
      // This configuration is better
      mongoose.connect(process.env.MONGO_URL, {
        useUnifiedTopology: true,
        useNewUrlParser: true,
        useCreateIndex: true,
        useFindAndModify: false,
      }, err => {
        if (err) throw Error(err.message);
    
        console.log("connected to MongoDB");
        application.listen(8800, () => console.log("backend server is running!"));
      });
    } catch (error) {
      console.log(error);
    }
    

    我认为您应该在像这样的 try-catch 语句中执行此操作:

    I think you should make this operation in a try-catch statement like this:

    // REGISTER
    router.get("/register", async (req, res) => {
      try {
        // Create user in database
        const user = await User.create({
          username: "john",
          useremail: "john@gmail.com",
          userpswrd: "123456"
        });
        
        res.status(200).json({ success: true });
      } catch (error) {
        res.status(500).json({ error });
        console.log(error);
      }
    
    });
    
    module.exports = router;
    

    然后你可以看到错误的详细信息,服务器继续运行.
    如果您无法解决问题,请在此处添加评论,我会尽快回来

    Then you can see error's details, and server keeps running.
    If you can't solve the problem just add a comment here I'll be back ASAP

    这篇关于卡在装载猫鼬的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆