【发布时间】:2020-06-07 04:52:44
【问题描述】:
服务器从 8080 开始 获取 / 304 - - 1.952 毫秒 (node:6139) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: bad auth 认证失败。 在新的 MongooseServerSelectionError (/Users/abc/Desktop/success/node_modules/mongoose/lib/error/serverSelection.js:22:11) 在 NativeConnection.Connection.openUri (/Users/abc/Desktop/success/node_modules/mongoose/lib/connection.js:808:32) 在 Mongoose.connect (/Users/abc/Desktop/success/node_modules/mongoose/lib/index.js:333:15) 在对象。 (/Users/abc/Desktop/success/pages/server.js:18:10) 在 Module._compile (internal/modules/cjs/loader.js:1158:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10) 在 Module.load (internal/modules/cjs/loader.js:1002:32) 在 Function.Module._load (internal/modules/cjs/loader.js:901:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) 在内部/main/run_main_module.js:18:47 (节点:6139) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志
--unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:1) (节点:6139)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。 获取 / 304 - - 0.320 毫秒 获取 / 304 - - 0.236 毫秒 获取 / 304 - - 0.210 毫秒
当我为我的 serverjs 运行端口 8080 时,文件可以工作,但没有数据进入我的 mongoDB,并且我在终端上收到上述错误。我只有一个 server.js 页面和一个 index.tsx 页面。我的 index.tsx 页面有一个简单的 Hello world,我正在尝试使用 server.js 文件连接 Mongodb。
这是我的代码:
import express from 'express';
import { connect, connection, Schema as _Schema, model } from 'mongoose';
import morgan from 'morgan';
import path from 'path';
const app = express();
const PORT = process.env.PORT || 8080;
//Success
const MONGODB_URI = 'mongodb+srv://xxxxxxxxxx';
mongoose.connect(MONGODB_URI || 'mongodb://localhost/success', {
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection.on('connected', () => {
console.log('Mongoose is connected');
})
//Schema
const Schema = _Schema;
const BlogPostSchema = new Schema({
title: String,
body: String,
date: {
type: String,
default: Date.now()
}
});
//Model
const BlogPost = model('BlogPost', BlogPostSchema);
//Saving data to our mongoDB
const data = {
title: 'welcome',
body: 'first post'
};
const newBlogPost = new BlogPost(data);
newBlogPost.save((error) => {
if (error) {
console.log("Somethign happened");
} else {
console.log("data saved");
}
});
//HTTP request logger
app.use(morgan('tiny'));
//Routes
app.get('/', (req, res) => {
const data = {
username: 'caa',
age: 5
};
res.json(data);
});
app.get('/api/name', (req, res) => {
const data = {
username: 'caa',
age: 5
};
res.json(data);
});
app.listen(PORT, console.log(`Server is starting at ${PORT}`));
【问题讨论】:
-
这似乎是一个身份验证问题。您的数据库是否受到某种身份验证的保护?如果是,您是否将身份验证详细信息添加到
MONGODB_URI?
标签: reactjs mongodb typescript next.js