Я работаю с Node.js + MongoDB для приложения. Время от времени, перед некоторым AJAX-запросом к серверу, я получаю эту ошибку:
net.js:434
var writeReq = this._handle.write(data);
^
TypeError: Cannot call method 'write' of null
at Socket._write (net.js:434:31)
at Socket.write (net.js:426:15)
at [object Object].<anonymous> (/path/to/node_modules/mongodb/lib/mongodb/connection.js:426:26)
at [object Object].emit (events.js:64:17)
at [object Object].<anonymous> (/path/to/node_modules/mongodb/lib/mongodb/connections/server.js:31:21)
at [object Object].emit (events.js:64:17)
at [object Object].<anonymous> (/path/to/node_modules/mongodb/lib/mongodb/db.js:78:25)
at [object Object].emit (events.js:64:17)
at [object Object].<anonymous> (/path/to/node_modules/mongodb/lib/mongodb/connections/server.js:110:12)
at [object Object].emit (events.js:64:17)
Я использую mongoskin для соединений от узла к MongoDB. Моя версия узла - 0.6.5. До этого я получал сообщение об ошибке только в connection.js
(оно просто выдавало ошибку и останавливалось), но мне удалось избежать этого, добавив суффикс ?auto_reconnect
к URL-адресу БД при создании экземпляра соединения и теперь У меня есть вся эта куча вещей.
Я должен сказать, что данные в моей базе данных довольно большие (например, коллекции 16 МБ), но я не думаю, что это реальная проблема здесь.
Я знаю, что дал очень мало информации, я могу сказать, что теоретически это должно происходить в коде, подобном этому:
var nmn_connect = require('mongoose/node_modules/mongodb').connect;
nmn_connect('mongo://localhost:8888/my_db?auto_reconnect', function(err, db) {
...
});
Да, я использую здесь node-mongo-native, потому что с mongoskin я не могу получить доступ к списку коллекций, который мне нужен для конкретной операции в моем клиенте. Таким образом, я думаю, что ошибка вызвана этим (который я помню, он должен использовать net.js
под капотом).
Кто-нибудь знает, что происходит?