2016-04-22 2 views
0

Я только начинаю с рамки Loopback API и хотел бы определить промежуточное программное обеспечение, которое будет предварительно обрабатывать данные req, прежде чем передавать его следующей функции. Но я не знаю, как получить доступ к данным в объекте req. Любая помощь?Loopback middleware - как получить доступ к данным в объекте req?

E.g.

function middleWareThatAddAPropertyToTheRequestJSON(req, res, next) { 
    // Of course I get undefined for req.data, but that's approximately what I want. 
    req.data.somethingIWouldLikeToChange = "blahblahblah"; 
} 

Edit:

Вот как я создаю приложение (в server.js)

var loopback = require('loopback'); 
var boot = require('loopback-boot'); 

var app = module.exports = loopback(); 

app.start = function() { 
    // start the web server 
    return app.listen(function() { 
    app.emit('started'); 
    var baseUrl = app.get('url').replace(/\/$/, ''); 
    console.log('Web server listening at: %s', baseUrl); 
    if (app.get('loopback-component-explorer')) { 
     var explorerPath = app.get('loopback-component-explorer').mountPath; 
     console.log('Browse your REST API at %s%s', baseUrl, explorerPath); 
    } 
    }); 
}; 

// Bootstrap the application, configure models, datasources and middleware. 
// Sub-apps like REST API are mounted via boot scripts. 
boot(app, __dirname, function(err) { 
    if (err) throw err; 

    // start the server if `$ node server.js` 
    if (require.main === module) 
    app.start(); 
}); 

часть middleware.json (в той же директории с server.js)

... 
"initial": { 
... 
    "./middleware/rest/middlewareThatAddAPropertyToTheRequestJSON": {} 
}, 
... 

middleware/rest/middlewareThatAddAPropertyToTheRequestJSON.js:

module.exports = function() { 
    return function middlewareThatAddAPropertyToTheRequestJSON(req, res, next) { 
     // TODO: add sth to the req 
     next(); 
    }; 
}; 

Другой Edit:

Может быть, я не быть точным. Я хочу изменить запрос POST.

например. Клиентские сообщений:

{ «а»: «б»}

Я хочу добавить пару ключ-значение для запроса. Как это можно сделать?

ответ

0

Оказывается, что мы можем читать только сообщение с запросом через Readable.read() способ req объекта, который является экземпляром класса http.IncomingMessage (как указано в reference). И мне кажется (мне) невозможно изменить сообщение. Если нам все равно придется манипулировать сообщением с запросом, это не будет сделано через объект req. Как упоминалось @IvanSchwarz, обычно бывает так, что это делается на других этапах, например. прежде чем хранить его в БД, передавая сообщение любым методам и т. д.

Спасибо за вашу помощь :)

Смежные вопросы