Die erste Anfrage funktioniert gut, aber nach einer anderen Anfrage habe ich diese Fehlermeldung erhalten. Meine Logik verdoppelt die Anforderung nicht, aber es sieht so aus, als ob jede Route nicht separat aufgerufen wird. Die erste Anfrage an /api/user
funktioniert einwandfrei. Nach einer Aktualisierung bekam ich den Fehler Can't set headers after they are sent.
node.js API-Antwort nicht beendet "kann Header nicht senden, nachdem sie gesendet wurden."
res.end()
erzeugt keinen Fehler.
res.send()
und res.json()
und res.header('Content-Type', 'application/json'); res.end();
werden Fehler bei einer Aktualisierung erzeugen.
In einer anderen API res.json()
funktioniert gut, aber es gibt keine Verwendung von Klassen/Funktionen noch EventEmitter. Vielleicht ist das Problem da?
routes.js
route.get("/", function(req, res) {
user.on('error', function(err) {
res.status(400).send({code: 900, message: err, data: null});
});
user.on('success', function(result) {
res.status(200).send({code: 200, message: 'OK', data: result});
});
user.getAll();
});
user.js
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var initialize = require(global.__base + "/config");
var db = initialize.db();
function User() {
var self = this;
this.get = get;
function _checkForErrors(error, rows, reason) {
if (error) {
self.emit('error', error);
return true;
} else if (reason) {
self.emit('failure', reason);
return true;
}
return false;
}
function _getData(error, rows) {
if (_checkForErrors(error, rows)) {
return false;
} else {
self.emit('success', rows);
return true;
}
}
function getAll() {
db.query("SELECT * FROM patient", _getData);
}
}
util.inherits(User, EventEmitter);
module.exports = User;
db init
module.exports = {
globalModules: function() { /*foo*/ },
db: function() {
var mysql = require('mysql');
var db = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'node_docx'
});
return db;
}
};
legen Sie Ihre Benutzerroute –