2016-07-04 15 views
1

Wenn ich eine Remote-Methode wie folgt aus:In Loopback.js, wie reagiert man auf eine Remote-Methode mit einem leeren Körper, wenn es ein Rückgabeargument hat?

Command.remoteMethod('invoke', { 
    http: {verb: 'post', status: 200, source: 'body'}, 
    returns: {arg: "text", type: "string"} 
}); 

Manchmal müssen wir mit dem text Argument und manchmal mit einem völlig leeren Körper reagieren. In dem Remote-Methode Code habe ich so etwas wie diese:

Command.invoke = callback => { 
    // ... 

    if (error) { 
    callback(null, 'There was an error'); 
    } else { 
    callback(null); 
    } 
} 

Das Problem ist, in dem else Zweig, der Körper nie leer. Ich habe auch versucht: callback(null, null) und callback(null, '').

Gibt es einen Weg, dies zu erreichen? Oder muss ich einen Remote-Hook implementieren, um die Antwort manuell zu ändern, um zu bekommen, wonach ich suche?

Antwort

2

beste Weg ist, die nach der Remote-Funktion

verwenden, wenn keine Inhalte, dann können Sie

ctx.res.statusCode = 204 
ctx.res.end(null); 
+0

Aufruf 'ctx.res.end() 'bedeutet,' next() 'nachher aufzurufen, wäre ein no op, korrekt? – guptron

0

Wenn Sie einen returns Block in model.js definieren, bedeutet dies, dass Ihre Remotemethode über einen Antworttext verfügt.

Für Ihre Situation können Sie das Ergebnis in Remote-Hooks entfernen.

Command.afterRemote("invoke", function(ctx, instance, next){ 
     //check if you want return text or nothing 
     //if nothing so set result to null, otherwise just call next() 
     ctx.result = null; 
     next(); 
    }); 
+0

Dieses Add wurde noch eine nicht leere Antwort bereitstellt – guptron