MongoDB - 오류: 잘못된 스키마, mongodb가 필요합니다.
저는 MEAN Stack으로 애플리케이션을 구축하는 것을 처음이며, 실시간 채팅 앱을 구축하려고 합니다. 여기 제 서버 측면이 있습니다.
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와 채팅이라는 데이터베이스를 만들었으며, mongo도 연결을 기다리고 있다고 확신합니다.그러나 node 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>
저는 이 단계에서 몇 주 동안 차단되어 있었는데, 누가 이것을 도와줄 수 있나요?
감사해요.
연결 문자열을 잘못된 형식으로 사용하고 있기 때문입니다.
사용 중입니다.localhost:27017/db/chat
당연한 일이지만mongodb://localhost:27017/db/chat
연결 문자열의 패턴은 다음과 같습니다.mongodb://<HOSTNAME>:<PORT>/<DBNAME>
참조용 기사: https://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html#mongoclient-connect
저도 방금 이 문제가 있었는데 프로토콜이 잘못되었기 때문입니다.
mongo://localhost:27017/test
프로토콜이 잘못되면 이 오류가 발생할 수도 있습니다.다음과 같이 해야 합니다.
mongodb://localhost:27017/test
경우에 따라 환경 변수 주변의 따옴표에 오류가 있을 수 있습니다.한 번 제거한 후 시도합니다.도움이 될 것 같습니다.
다음과 같은 오류가 있을 수 있습니다.
set DATABASE_URI='mongodb://localhost:1000/my_app' && node index.js
올바른 명령은 다음과 같습니다.
set DATABASE_URI=mongodb://localhost:1000/my_app && node index.js
사용해 보십시오. 효과가 있습니다.
mongoose.connect('mongodb://localhost:27017/shopping');
방금 같은 문제를 발견했습니다.빌어먹을 창은 환경에 인용문을 저장합니다.
그래서 창을 사용해서 이렇게 쓰면,SET MONGO_URL="mongodb://localhost:27017/{name of your db}"
그것은 정확하지 않습니다.
올바른 방법은SET MONGO_URL=mongodb://localhost:27017/{name of your db}
인용문 없이
또한 저는 당신이 프로토콜을 정확히 써야 한다는 것을 발견했습니다 - mongodb.url_parser.js 파일에서 프로토콜을 확인하는 코드가 있습니다.
var result = parser.parse(url, true);
if(result.protocol != 'mongodb:') {
throw new Error('invalid schema, expected mongodb');
}
작업 코드는 다음과 같습니다.
교체하는 것을 잊지 마십시오.username
,password
&URL
const socketClient = require('socket.io').listen(4000).sockets;
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<username>:<password>@cluster0-saugt.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
socketClient.on('connection', function (socket) {
//Need to Get the Database first before trying to access the collections.
let chat = client.db("test").collection('chats');
// Get chats from mongo collection
// perform actions on the collection object
chat.find().limit(100).sort({ _id: 1 }).toArray(function (err, res) {
if (err) {
throw err;
}
// Emit the messages
socket.emit('output', res);
});
});
});
분명한 것처럼 보일 수도 있지만 일반적으로 잘못된 값을 몽고 클라이언트에 전달할 때도 이 오류가 발생합니다.undefined
구성 개체에서 잘못된 키를 참조할 때 이 문제가 발생했습니다.
다음에서 이 줄의 내용 변경
mongo.connect('localhost:27017/db/chat',function(err,db)
로.
mongo.connect('mongodb://localhost:27017/db/chat',function(err,db)
그러면 MongoDB 데이터베이스를 성공적으로 연결할 수 있습니다.
mongodb npm 버전 업데이트
언급URL : https://stackoverflow.com/questions/35813584/mongodb-error-invalid-schema-expected-mongodb
'programing' 카테고리의 다른 글
Azure 함수가 여러 개인 솔루션을 어떻게 구성해야 합니까? (0) | 2023.05.22 |
---|---|
괄호 사이의 텍스트를 반환하는 정규식 (0) | 2023.05.22 |
String.Format - 작동 방법 및 사용자 정의 형식 문자열 구현 방법 (0) | 2023.05.17 |
손상된 파일 처리 (0) | 2023.05.17 |
Azure 큐 저장소에서 개체 메시지 전달 (0) | 2023.05.17 |