javascript - 我的架构没有保存到我的数据库(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
解决方案
const savedUser = await user.save();
user.save() 返回一个承诺,但你没有处理它
正确的代码是
const savedUser = await user.save();
savedUser
.then((users)=>
{
},(err)=>next(err))
.catch((err)=>next(err))
})
推荐阅读
- python - TypeError:在 EarlyStopping keras 中使用 restore_best_weights=True 时,类型为“NoneType”的对象没有 len()
- java - 这是将 MVVM 结构与 ViewModel 和 RecyclerView 一起使用而没有任何问题的正确方法吗?
- c++ - 在 SetConsoleTitle() 函数中传递 std::string
- kotlin - Kotlin 中的动态编程风格
- asp.net-mvc - 使用 Where Throws NotSupportedException 测试最小起订量
- javascript - 当 csv 列的名称在 Angular 中包含空格时,有没有办法读取它?
- node.js - 未从 mongo 数据库中获取数据。收到一个空错误。尽管 mongo 云中存在集合
- java - 使用 Gson 反序列化 LocalDate 的问题
- apache-spark - Apache Spark 中的自动批处理
- python - 具有默认属性工厂的 Python 类