MongoDB - Error: invalid schema, expected mongodb
Solution 1
This is because you are using the connection string in an improper format.
You are using localhost:27017/db/chat
while it should be mongodb://localhost:27017/db/chat
The pattern for the connection string is mongodb://<HOSTNAME>:<PORT>/<DBNAME>
Article for reference: https://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html#mongoclient-connect
Solution 2
I just had this issue as well and it was because I had the protocol wrong:
mongo://localhost:27017/test
The protocol being wrong can also cause this error. It should be like this:
mongodb://localhost:27017/test
Solution 3
Sometimes, error might be with the quotes around environment variables. Remove them once and try. Might help.
Error might be with :
set DATABASE_URI='mongodb://localhost:1000/my_app' && node index.js
Correct command will be:
set DATABASE_URI=mongodb://localhost:1000/my_app && node index.js
Solution 4
Try this, it works:
mongoose.connect('mongodb://localhost:27017/shopping');
Solution 5
Just figured out the same problem. Damned windows save quotes in environment.
So if you use windows and wrote this way SET MONGO_URL="mongodb://localhost:27017/{name of your db}"
It is not correct.
Correct way is SET MONGO_URL=mongodb://localhost:27017/{name of your db}
without quotes.
Also i discovered that you must write protocol exactly - mongodb. There is code what check the protocol from file url_parser.js
var result = parser.parse(url, true);
if(result.protocol != 'mongodb:') {
throw new Error('invalid schema, expected mongodb');
}
Ahmed202
Updated on July 09, 2022Comments
-
Ahmed202 almost 2 years
I'm new in building application with MEAN Stack, I'm trying to build a real time chat app, here is my server side :
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); }); }); });
I am sure that i created a data base called chat with mongodb, also mongo is waiting for connection. But when i run the server with node server.js an error occurs :
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>
I had been blocked at this phase for weeks, could anyone help on this?
Thanks.
-
user25794 over 6 yearsThis seems to be the case on WIndows 10 at least, haven't tested other systems. Thanks!
-
Rohan_Paul about 6 yearsBeautifully worked in MongoDB 3.6.2 and Ubuntu 16.04
-
Josh Peak almost 6 yearsJust had the same issue with
docker-compose
environment variables. I needed to not have it wrapped in any quotes (single or double). This worked for me.MONGODB_URI=mongodb://mongo:27017/
-
BRasmussen about 5 yearsUsing the mongo-seeding-cli (github.com/pkosiec/mongo-seeding/tree/master/cli). This was the issue for me. Their example for specifying the host includes quoting. However, including the quotes seems to cause OP's error.
-
jrh almost 5 yearsUsers of nosqlclient should note that it requires urls to start with
mongdb://
, a url likelocalhost
will not work.