Mam odpocząć api zasobów, które akceptuje post JSON. Przykład:Node.js, Express, Mongoose - sprawdzanie danych wejściowych - w trasie lub modelu?
{
"location": {
"coordinates": [
-122.41941550000001,
37.7749295
]
}
Współrzędne następnie z żądanie Express:
module.exports.create = function(req, res, next) {
var coordinates = req.body.location.coordinates;
....
Następnie są przedstawione wzorem grandidieri. Piszę testy przeciwko temu, gdy brakuje współrzędnych location.coordinates, np.
{
"foo": {
"bar": [
-122.41941550000001,
37.7749295
]
}
To wtedy się nie powiedzie w sekcji walidacji modelu z:
locationSchema.path('location.coordinates').validate(function(coordinates){
^
TypeError: Cannot call method 'validate' of undefined
Więc moje pytanie brzmi: w jaki sposób mogę potwierdzić, że wejście jest poprawna? Czy należy to zrobić na trasie przed dostaniem się do modelu, czy też powinno to być zrobione w modelu? Dowolne przykłady tego są również mile widziane.
Dla porównania model Mongoose wyglądał:
var locationSchema = new Schema({
userid: { type: Number, required: true },
location: {
type: [{
type: "String",
required: true,
enum: ['Point', 'LineString', 'Polygon'],
default: 'Point'
}], required: true,
coordinates: { type: [Number], required:true }
},
create_date: { type: Date, default: Date.now }
});
locationSchema.path('location.coordinates').validate(function(coordinates){
...
}, 'Invalid latitude or longitude.');
Zdecydowanie zapisuję to jako urywek! – xShirase
@ jmar777 - to bardzo pomocne. Wprowadzenie tej warstwy abstrakcji ma sens w całej mojej aplikacji. Dzięki za poświęcenie czasu na podzielenie się swoimi przemyśleniami, to bardzo mi pomogło! – Ben