0
對我的MongoDB DB執行查找查詢似乎會重置連接並使節點服務器崩潰。MongoDB查詢將套接字連接重置爲Node.js服務器
我的服務器處理套接字事件是這樣的:
io.sockets.on('connection', function(socket) {
MongoClient.connect(url, function(err, db) {
if (err)
console.log('Error');
console.log('Connection established to', url);
var collection = db.collection('spedizioni');
socket.on('adminReq', function() {
handlers.handleAdmin(collection, socket);
});
});
});
的handleAdmin功能是:
function handleAdmin(collection, socket) {
console.log('Admin event');
collection.find(null, function(err, raw) {
console.log('Find function');
console.log(raw);
if (err){
socket.emit('err');
console.log('Error function');
}
if (raw) {
socket.emit('adminRes', raw);
console.log('Response function');
} else {
socket.emit('adminNull');
console.log('Null function');
}
});
}
我想查詢返回數據庫上的所有項目;根據MongoDB手冊,我通過執行不帶參數的查詢查詢來實現這一點。
我嘗試省略null或使用{}作爲第一個參數,但沒有任何更改。
在按下按鈕以生成adminReq事件,「連接到DB」字符串印刷在控制檯和Firefox的控制檯信號到插座的新連接被estabilished;我的客戶端腳本連接到document.load一次。
之後是節點控制檯輸出;你可以看到查詢被執行;看着'原始'輸出似乎失敗了嘗試。 err爲空,沒有別的輸出。
望着關於「最長呼叫棧」其他的答案超出現在看來,這是一個遞歸函數通常引起的,但這裏的情況並非如此。
這是爲什麼輸出,而不是查詢結果?爲什麼連接重置?
一個非常類似的功能工作正常,並返回整個DB的語法似乎是正確的,感覺我失去了一些東西很明顯...