wczoraj zacząłem używać sterownika javascript MongoDB.MongoDB "Gniazda serwera zamknięte" i brak poprawki znaleziono
Wystąpił problem, błąd stale się wyświetla, ale dane są nadal przechowywane.
Poniżej przedstawiono javascript, którego używam do początkowego łączenia się z bazą danych, a następnie inicjowane jest zapytanie wstawiania. Kiedy nie inicjując INSERT, wyjścia konsoli:
prawidłowo podłączony do serwera
odłączony od serwera powodzeniem
Ale gdy uruchomiony z kwerendy INSERT, zwracany jest błąd.
prawidłowo podłączony do serwera
{ [MongoError: server localhost:27017 sockets closed]
nazwa: 'MongoError',
message: 'server localhost:27017 sockets closed'}
odłączony od serwera powodzeniem
Może ktoś mi punkt w dobrym kierunku?
MongoClient.connect(db_default.db_url, function(err, db) {
console.log('Connected correctly to server');
if(err) {
console.log(err);
}
else {
mongoInsert(db, 'user', user_default, function(user_res) {
console.log(user_res);
});
}
db.close();
console.log('Disconnected from server successfully');
});
function mongoInsert(db, collection_name, data,cb) {
var collection = db.collection(collection_name);
collection.insert(data, function(err, res) {
if(err) {
console.log(err);
}
else {
console.log('Inserted into the ' + collection_name + ' collection');
cb(res);
}
});
}
Asynchroniczność. Twoje wywołanie zwrotne połączenia wywołuje funkcję wstawiania i natychmiast zamyka połączenie z bazą danych przed faktycznym uruchomieniem wkładki. Spróbuj zamknąć połączenie bazy danych w wywołaniu zwrotnym z insertu. – wdberkeley
@wdberkeley Więc jeśli połączenie się zamyka przed uruchomieniem wkładki, w jaki sposób przechowywane są dane? –
@SasankaPanguluri jest to niedeterministyczne, ale jeśli wystąpi wstawka, to dzieje się tak, że sterownik bazy danych wysyła żądanie do bazy danych, a następnie zamyka połączenie. Baza danych przetwarza wstawkę, ale nie może pomyślnie ukończyć interakcji z powodu zamknięcia gniazda. – Eoin