Ich habe ein Problem mit meiner reagierenden nativen App, die mit meiner Node-API interagiert. Wenn ich versuche, Daten zu veröffentlichen, um einige Werte in der Datenbank über Knoten (die dann zu einer gespeicherten Prozedur geht) zu aktualisieren, bekomme ich eine 500 - kann Header nicht festlegen, nachdem sie in Node gesendet werden.React Native/Node-API: Kann Header nicht festlegen, nachdem sie gesendet werden
Alles, was ich finden kann, sagt, dass dies daran liegen könnte, Antworten zweimal zu senden. Ich denke nicht, dass das hier der Fall ist. Ich habe im Postboten getestet und die Dinge funktionieren gut, es gibt einen Status von 200 mit den richtigen zurückgegebenen Daten zurück.
Ich versuche, Daten an die API zu schreiben, wie so:
const myHeaders = new Headers();
myHeaders.append('Content-Type', 'application/json');
fetch(`http://localhost:3000/user/preferences`, {
method: 'POST',
headers: myHeaders,
mode: 'cors',
cache: 'default',
body: JSON.stringify({
id: '1',
minage: this.state.minageValue,
maxage: this.state.maxageValue
})
})
.then(response => response.json())
.then(body => console.log(body))
.catch(err => console.log(err));
ich es auf der API-Seite und Weitergabe der Daten an eine gespeicherte Prozedur mit diesem empfange: Jede
function updatePreferences(req, res, next) {
console.log(req);
var userid = req.body[0].id;
var minage = req.body[0].minage;
var maxage = req.body[0].maxage;
db.func('___spsavepreferences', [userid, minage, maxage])
.then(function(data){
res.status(200)
.json({
status: 'success',
preferences: data
});
});
}
Ideen?
EDIT:
Sie wissen nicht, ob diese mir etwas erzählt, aber ich habe die Fehlermeldung an der Konsole angemeldet:
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:504:11)
at ServerResponse.setHeader (_http_outgoing.js:511:3)
at ServerResponse.header (/Users/user/Projects/Project_node/node_modules/express/lib/response.js:730:10)
POST /user/preferences 500 410.809 ms - 189
at ServerResponse.send (/Users/user/Projects/Project_node/node_modules/express/lib/response.js:170:12)
at done (/Users/user/Projects/Project_node/node_modules/express/lib/response.js:967:10)
at Object.exports.renderFile (/Users/user/Projects/Project_node/node_modules/jade/lib/index.js:374:12)
at View.exports.__express [as engine] (/Users/user/Projects/Project_node/node_modules/jade/lib/index.js:417:11)
at View.render (/Users/user/Projects/Project_node/node_modules/express/lib/view.js:128:8)
at tryRender (/Users/user/Projects/Project_node/node_modules/express/lib/application.js:640:10)
at Function.render (/Users/user/Projects/Project_node/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/user/Projects/Project_node/node_modules/express/lib/response.js:971:7)
at /Users/user/Projects/Project_node/app.js:51:7
at Layer.handle_error (/Users/user/Projects/Project_node/node_modules/express/lib/router/layer.js:71:5)
at trim_prefix (/Users/user/Projects/Project_node/node_modules/express/lib/router/index.js:315:13)
at /Users/user/Projects/Project_node/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/Users/user/Projects/Project_node/node_modules/express/lib/router/index.js:335:12)
EDIT 2: Verstanden. Ich brauchte die Werte als req.body.id, req.body.minage, etc ... nicht als req.body [0] .id. Seltsam, um einen Fehler zu bekommen, aber das hat den Fehler behoben.
Hallo Nebenschau, danke für die Antwort. Ich könnte völlig falsch liegen, aber das scheint nicht das Problem zu sein. Ich habe die Optionswünsche über curl geschickt und eine Antwort von 200 erhalten - was darauf hindeutet, dass alles gut ist ... Ich habe auch mehrere andere API-Endpunkte (die ziemlich genau gleich aussehen, nur verschiedene Stored Procedure-Namen und -Parameter) das funktioniert gut. Ich habe meinen Beitrag mit der Fehlermeldung aktualisiert. Der Rest der App ist so ziemlich eine Standard-Node-Installation - ich habe nicht viel geändert. – nab1994
OK nicht sicher, wie sehr die Antwort tatsächlich geholfen hat, aber ich sehe dich von deinem Update auf die Frage, dass du es geschafft hast, die Ursache aufzuspüren und zu beheben, also bin ich nur froh zu hören, dass du die Lösung gefunden hast :) – sideshowbarker