Mongoose Blöcke Node.js, wenn es Daten erhält. Ich dachte, dass es absolut keine Blockierung sein sollte und wenn ein Callback erscheint, dann sollte es einfach zurückkommen.Mongoose Query Blöcke Node.js
Das Problem ist, mit:
Container.find({}, function (err, documents) {
res.status(200).send(documents);
});
Wenn ich diesen Weg in Express.js laufen wird es nur NodeJS für 10sec um einfrieren, und niemand kann sonst Verbindung dann erreichen.
Ich habe zu Beginn eine offene Verbindung zu MongoDB, benutze Mungo und mache später nichts damit. Was ist das Problem? Es soll so funktionieren?
UPDATE:
Also das ist, wie ich
function initialDb() {
seed();
seedStructure();
startApplication();
}
database.connect();
database.loadModels(initialDb);
Mungo init und dies ist der Ort, an dem ich verbinden und init Modelle
import mongoose from 'mongoose';
import chalk from 'chalk';
import config from '../config';
export default {
loadModels(callback){
require('../../models/site');
require('../../models/page');
require('../../models/container');
require('../../models/template');
require('../../models/theme');
if (typeof callback === 'function') {
return callback();
}
},
connect() {
mongoose.connect(config.db.uri, function (err) {
if (err) {
console.error(chalk.red('Could not connect to MongoDB!'));
console.log(err);
}
});
},
disconnect(callback) {
mongoose.disconnect(function (err) {
console.info(chalk.yellow('Disconnected from MongoDB.'));
callback(err);
});
}
};
und das Modell
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var container = new Schema({
});
let model = mongoose.model('container', container);
module.exports = model;
Es gibt rund 26k Dokumente zurück.
Sie haben absolut Recht, dass diese Abfragen _not_ nicht fallen sollten. Kannst du ein wenig mehr Kontext darüber teilen, wie du dich mit Mungo und dem Modellcode verbindest? –
@JohnnyHK gibt es rund 26k Datensätze zurück. – Shiroo
@NickTomlin ich aktualisierte Informationen – Shiroo