如何使用NodeJS和PM2对MongoDB进行身份验证以不断运行Node

时间:2019-10-02 06:25:43

标签: node.js mongodb pm2

我正在尝试使用mongoose向mongodb验证我的connect语句。我有

//In app.js

mongoose.connect('mongodb://localhost:27017/databasenamehere', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    user: 'username',
    pass: 'password'
});

/etc/mongo.conf文件设置为

...
#bindIP //commented this out
...
security:
     authentication: enabled
...

并且还尝试将其作为

放入.connect字符串中。
//In app.js
mongoose.connect('mongodb://username:password@localhost:27017/databasenamehere', {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

还尝试了以下文档:

mongod --auth --port 27017 --dbpath /var/lib/mongodb

//and 

mongod --auth --port 27017 --dbpath /var/lib/mongodb

docs:https://docs.mongodb.com/manual/tutorial/enable-authentication/

,但它也不以这种方式工作。当我访问MEAN堆栈应用程序上的某个页面,该页面调用NodeJS后端以从F12(chrome开发人员工具)中的MongoDB获取数据时,它显示该调用的状态为(失败),并显示“无法加载响应数据” 。我正在使用的服务器具有Ubuntu 18.04。

我希望看到app.js能够与我在mongoDB中创建的用户(已为我选择该用户的数据库)成功连接到mongoDB。意思是我禁用了安全性(在上面几行中有注释),创建了一个用户,并为创建的用户赋予了readWrite特权,并绑定到我想要的数据库,然后根据文档在mongo.conf文件中重新启用了安全性。

此外,我想知道如何使用PM2(npm install pm2)并始终运行我的后端nodeJS代码,以便Node将始终运行我的app.js,以便API调用将成功。

1 个答案:

答案 0 :(得分:0)

取消注释bindIp并将其设置为127.0.0.1

bindIp = 127.0.0.1

security:
     authentication: enabled

这将解决您的问题