ich den Express Rahmen verwenden und ich habe folgend in einem meiner Route Dateien:NodeJS Rückruf - Zugang zu ‚res‘
var allUsersFromDynamoDb = function (req, res) {
var dynamodbDoc = new AWS.DynamoDB.DocumentClient();
var params = {
TableName: "users",
ProjectionExpression: "username,loc,age"
};
dynamodbDoc.scan(params, function (err, data) {
if (err) {
console.error("Unable to query. Error:", JSON.stringify(err));
res.statusCode = 500;
res.send("Internal Server Error");
} else {
console.log("DynamoDB Query succeeded.");
res.end(JSON.stringify(data.Items));
}
});
}
ich in eines meiner Routen der obige Funktion bin mit:
Jetzt kann der Callback, den ich beim Aufruf des "scan" auf dynamodbDoc definiere, sehr nützlich sein, wenn er als separate Funktion definiert wird. Ich kann das für einige meiner anderen Routen auch wiederverwenden.
Aber wie kann ich noch Zugang zu den "res" innerhalb dieser neuen Funktion bekommen?
Ich denke, ich sollte "Schließung" verwenden, aber ich kann nicht scheinen, es genau richtig zu bekommen. Ich glaube, ich würde benötigt die Unterschrift der neuen Callback-Funktion beizubehalten 2 params zu erwarten, „err“ und „Daten“ gemäß der folgenden Seite:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#scan-property
Alle Ideen, wie dies getan werden kann?
Ich denke, Sie können den Callback in seine eigene benannte Funktion einfügen, solange sie sich im gleichen Bereich befindet, von dem 'dynamodbDoc.scan' aufgerufen wird. Hier hat Ihr Callback aufgrund des 'closure'-Features von JS Zugriff auf das gleiche' res'-Objekt wie 'dynamodbDoc.scan'. –
Oh ja, das ist eine Option. Ich hätte das eigentlich in meiner Fragebeschreibung erwähnen sollen. Aber wenn ich das tue, dann wird diese Callback-Funktion nicht außerhalb der "allUserFromDynamoDB" -Funktion verfügbar sein.Angenommen, ich hatte eine andere Funktion (für eine andere Route) 'getSpecificUserFromDynamoDB' von wo ich es auch verwenden wollte. Hoffe, es ist klar, was ich sage. – vksinghh
Problem ist, dass, wenn die Callback-Funktion außerhalb des Geltungsbereichs von 'allUsersFromDynamoDb' definiert ist, es keinen Zugriff auf' res' oder req' Objekte hat. Sie können einen Workaround finden, den ich denke (abhängig von der spezifischen Verwendung). –