J'ai écrit un service PUT simple en utilisant express. Maintenant, lorsque j'appelle le service PUT et lui passe les données, je trouve quelque chose d'étrange. Lorsque je lis les données en utilisant req.data, je peux voir les données que j'ai passées. Mais quand j'essaie d'entrer dans la propriété de req.data, j'obtiens un undefined.
Voici mon app.js
module.exports = function (data) {
var express = require('express');
var path = require('path');
var routes = require('./routes/index')(data);
var bodyParser = require('body-parser');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
res.set('X-Powered-By', 'Flight Tracker');
next();
});
//CORS middleware
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:63018');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
app.put('/newflight', routes.create);
return app;
};
Voici le vol
var Flight = function () {
this.data = {
number: null,
origin: null,
destination: null,
departs: null,
arrives: null,
actualDepart: null,
actualArrive: null
};
this.fill = function (info) {
for (var prop in this.data) {
if (this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerDepart = function () {
this.data.actualDepart = Date.now();
};
this.triggerArrive = function () {
this.data.actualArrive = Date.now();
};
this.getInfo = function () {
return this.data;
};
};
//Serving as factory to create instances of Objects
module.exports = function (info) {
var instance = new Flight();
instance.fill(info);
return instance;
}
Voici mes itinéraires
module.exports = function (data) {
var flight = require('../flight');
for (var number in data) {
console.log(data[number]);
data[number] = flight(data[number]);
};
var functions = {};
functions.create = function(req,res){
if(!req.body) {
return res.sendStatus(400);
} else{
console.log(req.body);
console.log(req.body.number);
console.log(req.body.origin);
console.log(req.body.destination);
var number = req.body.number;
data[number] = flight(req.body);
console.log(data[number]);
res.json({
status:202,
statusText:"Entries have been created",
data:data
});
}
};
return functions;
}
J'ai également le résultat de la méthode de création ci-dessus :
Une idée de la raison pour laquelle cela se produit ?