无效的模式,预期的mongodb

我是用MEAN Stack创build应用程序的新手,我试图构build一个实时聊天应用程序,这里是我的服务器端:

console.log("Server running...!"); var mongo=require('mongodb').MongoClient; var client=require('socket.io').listen(8080).sockets; mongo.connect('localhost:27017/db/chat',function(err,db){ if(err) throw err; client.on('connection',function(socket){ console.log('someone has connected !'); //waiting for input socket.on('input',function(data){ console.log(data); }); }); }); 

我确信我用mongodb创build了一个名为chat的数据库,mongo也在等待连接。 但是,当我运行服务器与节点server.js发生错误:

 Server running...! C:\Users\azus\Desktop\Psirt\codemaster\node_modules\ mongodb\lib\url_parser.js:20 throw new Error('invalid schema, expected mongodb'); ^ Error: invalid schema, expected mongodb at module.exports (C:\Users\azus\Desktop\Psirt\code-master\node_modules\mong odb\lib\url_parser.js:20:11) at connect (C:\Users\azus\Desktop\Psirt\code-master\node_modules\mongodb\lib \mongo_client.js:125:16) at Function.MongoClient.connect (C:\Users\azus\Desktop\Psirt\code-master\nod e_modules\mongodb\lib\mongo_client.js:109:3) at Object.<anonymous> (C:\Users\azus\Desktop\Psirt\code-master\server.js:6:8 ) at Module._compile (module.js:413:34) at Object.Module._extensions..js (module.js:422:10) at Module.load (module.js:357:32) at Function.Module._load (module.js:314:12) at Function.Module.runMain (module.js:447:10) at startup (node.js:139:18) C:\Users\azus\Desktop\Psirt\code-master> 

我在这个阶段被封锁了好几个星期,请帮忙

这是因为你使用了一个错误的连接string。

你用localhost:27017/db/chat而应该是mongodb://localhost:27017/chat

https://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html#mongoclient-connect

模式是mongodb://{hostname}:{port}/{dbname}

我也有这个问题,这是因为我的协议是错误的:

 mongo://localhost:27017/test 

协议错误也可能导致此错误。 应该是这样的:

 mongodb://localhost:27017/test 

有时,错误可能与环境variables的引号有关。 删除它们一次,然后尝试。 可能有帮助。

错误可能与:

  set DATABASE_URI='mongodb://localhost:1000/my_app' && node index.js 

正确的命令将是:

  set DATABASE_URI=mongodb://localhost:1000/my_app && node index.js 

可能看起来很明显,但是当你将无效值传递给mongo客户端时,你也会遇到这个错误,例如undefined 。 当我在configuration对象上引用了错误的键时,就进入了这个界面。