Frage

Mit Express (für node.js ) Wie schreibe ich eine Antwort nach einem Rückruf?

Im Folgenden ist ein minimales Beispiel. posix.cat ist eine Funktion, kehrt ein Versprechen, up etwas zum Ergebnis hat, und ich möchte, dass als Antwort senden.

require.paths.unshift('lib');
require('express');
var posix = require('posix');

get('/', function () {
    function up(s) {
        return s.toUpperCase();
    }
    return posix.cat('/etc/motd').addCallback(up);
});

run(3001);

Der Kunde bekommt nie eine Antwort.

Ich habe auch Variationen dieser versucht:

get('/2', function () {
    var myRequest = this;
    function up(s) {
        myRequest.respond(s.toUpperCase());
    }
    return posix.cat('/etc/motd').addCallback(up);
});

aber das neigt zu Absturz alles:

[object Object].emitSuccess (node.js:283:15)
[object Object].<anonymous> (node.js:695:21)
[object Object].emitSuccess (node.js:283:15)
node.js:552:29
node.js:1027:1
node.js:1031:1
War es hilfreich?

Lösung

Nach diesen , das Problem mit dem Ansatz # 2, dass respond war aufgerufen, bevor wurde ein Statuscode festgelegt.

Das funktioniert:

get('/2', function () {
    var myRequest = this;
    function up(s) {
        myRequest.halt(200, s.toUpperCase());
    }
    return posix.cat('/etc/motd').addCallback(up);
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top