我是MEAN开发的新手,我正在开发一个简单的应用程序,第一步我试图连接到我的mongodb,所以我安装了node、express、morgan、mongodb、mongoose。
这是我在index.js:中的代码
const express = require('express');
const morgan = require('morgan');
const app = express();
const { MongoClient } = require('./database');
// Settings
app.set('port', process.env.PORT || 3000);
// Middlewares
app.use(morgan('dev'));
app.use(express.json());
// Routes
// Starting the server
app.listen(app.get('port'), () => {
console.log('server on port', app.get('port'));
});
然后是我数据库.js:上的代码
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://duke:<password>@cluster0-dreyi.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
const collection = client.db("test").collection("devices");
console.log("horrorrrrrr");
// perform actions on the collection object
client.close();
});
module.exports = MongoClient;
我还尝试了mongodb页面上的这段代码来连接到应用程序:
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://duke:<password>@cluster0-dreyi.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
const collection = client.db("test").collection("devices");
// perform actions on the collection object
client.close();
});
当然,我把密码改成了真密码。请记住,今天是我第一次接触mongodb,也是MEAN全栈,我在这个连接上花了太多时间。
这就是我得到的错误:
(节点:5284(不推荐使用警告:当前服务器发现和监视引擎不推荐使用,将在将来的版本中删除。要使用新的服务器发现和监控引擎,请将选项{useUnifiedTopology:true}传递给MongoClient构造函数。
编辑
@iLiA感谢您的回复!我试过你的代码,但不起作用,我会向你展示我是如何使用真实密码完成的:
const url = 'mongodb+srv://duke:password@cluster0-dreyi.mongodb.net/test?retryWrites=true&w=majority';
const mongoose = require('mongoose');
mongoose.connect(url, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
})
.then(()=>{
console.log('congrats, problem solved')
})
.catch((err)=>{
console.log(`there is not a problem with ${err.message}`);
process.exit(-1)
})
module.exports = mongoose;
错误为:服务器选择在30000毫秒后超时没有问题[节点]应用程序崩溃-在启动之前等待文件更改。。。
问候,
我很困惑为什么你同时下载了mongodb
和mongoose
,但这里是猫鼬解决方案
const mongoose = require('mongoose');
mongoose.connect(url, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
})
.then(()=>{
console.log('congrats, problem solved')
})
.catch((err)=>{
console.log(`there is a problem with ${err.message}`);
process.exit(-1)
})
编辑:似乎你忘了在mongo地图册中将你的IP地址列入白名单。