我无法从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.
答案 0 :(得分:1)
该错误似乎表明,通过您的程序,您无需在正确的数据库上进行身份验证。
从shell连接时,在您的特定情况下,这将导致错误:
mongo -u test -p test
您必须指定聊天数据库:
mongo chat -u test -p test
我不认为这是套接字错误,因为您正在连接,错误消息似乎表明您只是没有在正确的数据库上进行身份验证(在本例中是聊天数据库)