Zuerst funktioniert alles, und ich kann erfolgreich Daten speichern, indem Sie auf die/Upload-Route buchen. Aber nach 120 Sekunden Inaktivität wird das Zeitüberschreitungs-Ereignis ausgelöst, und zukünftige Versuche, Daten zu speichern, schlagen fehl. Der Rückruf wird jedoch nicht aufgerufen, daher gibt es keine Nachricht "Unable to insert..."
im Protokoll.MongoDB Verbindung zu MongoLab Zeitüberschreitung in NodeJS auf Heroku
var express = require('express');
var bodyParser = require('body-parser');
var winston = require('winston');
var config = require('./config');
var MongoClient = require('mongodb').MongoClient;
var app = express();
app.use(bodyParser.json());
app.post('/upload', function (req, res) {
req.json({status: 'recieved'});
req.app.locals.db.collection('data').insertOne(req.body, function(err, result) {
if (err === null) {
winston.info('Successfully inserted', {data: req.body});
} else {
winston.warn('Unable to insert', {cause: err});
}
});
});
const options = {
server: {
socketOptions: {
keepAlive: 1,
autoReconnect: true,
connectTimeoutMS: 5000
}
}
};
MongoClient.connect(config.databaseURI, function(err, db) {
if (err !== null) {
winston.error('Could not connect to database', {cause: err});
return;
}
db.on('timeout', function (err) {
winston.error('Mongo timed out', {cause: err});
});
app.locals.db = db;
app.listen(config.port, function() {
winston.info('Listening on port %d', config.port);
});
});
ich anhand meines Code locker weg von this example. Es wurde mir vorgeschlagen, dass ich nach jeder Anfrage eine neue Verbindung zur DB öffne, aber diese is not best practice seit intern MongoClient.connect
verwaltet einen Pool. Ich habe auch versucht, einige der Optionen nach this zu ändern. Immer noch kein Glück.
Jemand hatte ein ähnliches Problem von vor einer Weile [hier] (http://stackoverflow.com/questions/9670179/Anwendungs-Time-Out-wenn-Verbindung-zu-Mongolab-von-Heroku). Setzen Sie die Werte für den Knoten und die npm-Engine in package.json? –
Ich habe den Code ausprobiert, den er hat, und heroku weigert sich, die App zu kompilieren, die besagt, dass Knoten Knoten 0.6.12 nicht heruntergeladen werden kann; existiert es? 'Leider empfiehlt der Autor dieser Lösung das Herunterstufen von Node und Npm, aber erklärt nicht, warum das irgendetwas behebt, also bin ich mir nicht sicher, welche Version ich als nächstes ausprobieren soll. – charmoniumQ