首页 > 解决方案 > 我的架构没有保存到我的数据库(MongoDB)

问题描述

我正在学习一个教程,但在某一点上卡住了。我尝试在 Postman 中发出 POST 请求,但返回了一个我无法解决的错误。错误如下:

(节点:3224)UnhandledPromiseRejectionWarning:MongooseError:操作users.insertOne()缓冲在超时 10000 毫秒后超时。(C:\Users\Murad\Desktop\Full Stack\Node\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:185:20) 在 listOnTimeout (internal/timers.js:549:17)在 processTimers (internal/timers.js:492:7) (node --trace-warnings ...用于显示警告的创建位置)(节点:3224) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict(参见 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:1)(节点:3224)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

代码如下

// index.js File
const express = require('express');
const app = express();
const mongoose = require('mongoose');
// const dotenv = require('dotenv');

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

// Route middleware
app.use(express.json());
app.use('/api/user', authRoute);

// dotenv.config();
const myUrl = 'mongodb+srv://murad:<password>@cluster0.ag5vr.mongodb.net/DatabaseName?retryWrites=true&w=majority';

mongoose.connect(myUrl,
    { useNewUrlParser: true, useUnifiedTopology: true },
    () => {
        console.log('Connected to db');
    })



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

// My auth.js (router) file
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
    })
    
        const savedUser = await user.save();
        res.send(savedUser);
    
})

module.exports = router;

// And my User.js (model) file
````const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
        min: 6,
        max: 255
    },
    email: {
        type: String,
        required: true,
        min: 6,
        max: 255
    },
    password: {
        type: String,
        required: true,
        min: 6,
        max: 1024
    },
    date: {
        type: Date,
        default: Date.now
    }
})

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

I tried to look up solutions but none seemed to work. Help would be much appreciated! Thanks in advance

标签: javascriptnode.jsmongodbmongoose

解决方案


const savedUser = await user.save();

user.save() 返回一个承诺,但你没有处理它

正确的代码是

const savedUser = await user.save();
savedUser
.then((users)=>
{
  
},(err)=>next(err))
.catch((err)=>next(err))
})

推荐阅读