MongoError:db上没有授权执行命令?与socket.io连接时

时间:2017-01-16 18:09:29

标签: mongodb socket.io

我无法从socket.io连接到我的mongodb。 当我运行我的server.js时,它说它与mongodb连接并且它连接到套接字但是它显示错误

MongoError: not authorized on db to execute command find.

我作为管理员用户进入mongo管理员数据库,然后转到“聊天”数据库,并在数据库中创建了一个新用户,其角色为“readWrite”。

use chat

然后:

db.createUser({user: "testuser", pwd: "testuser", roles: [{role: "readWrite", db: "chat" }]})
Successfully added user: {
    "user" : "testuser",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "chat"
        }
    ]
}

用户被创建。 当我用db.auth("testuser","testuser")测试时,我得到1。 然后我退出并转到我的bin文件夹,在那里我写道:mongo.exe -u testuser -p testuser chat;

然后它连接到mongodb://127.0.0.1:127017/chat

然后我打开一个新提示并转到我的文件夹,在那里我有与db连接的server.js并运行它,然后首先说服务器正在运行并且它与mongodb连接。

当我转到我的聊天页面并加载它然后它说:MongoError未经授权......

我像这样连接我的server.js文件

var port = process.env.PORT || 3000;
server.listen(port);
console.log('Server running *:'+port);

var io = require('socket.io').listen(server);
var mongoose = require('mongoose');

//mongoose.connect('mongodb://127.0.0.1:27017/chat', function(err){
mongoose.connect('mongodb://localhost/chat', function(err){

我不知道我失踪了什么,我已经关注了mongodb上的文档并且看了看网上的所有内容,但不知道我哪里出错了。

任何输入都非常感谢。

当我加载聊天页面并查看控制台时,我收到此错误。

https://manmade.se:3000/socket.io/?EIO=3&transport=polling&t=Lceu0Ot&sid=wbFhDl7yylt4_4a1AAAA net::ERR_CONNECTION_RESET

index_webb.html:1 WebSocket connection to 'wss://manmade.se:3000/socket.io/?EIO=3&transport=websocket&sid=wbFhDl7yylt4_4a1AAAA' failed: WebSocket is closed before the connection is established.

1 个答案:

答案 0 :(得分:1)

该错误似乎表明,通过您的程序,您无需在正确的数据库上进行身份验证。

从shell连接时,在您的特定情况下,这将导致错误:

mongo -u test -p test

您必须指定聊天数据库:

mongo chat -u test -p test

我不认为这是套接字错误,因为您正在连接,错误消息似乎表明您只是没有在正确的数据库上进行身份验证(在本例中是聊天数据库)