У меня есть ресурс api rest, который принимает сообщение JSON. Пример:Node.js, Express, Mongoose - проверка ввода - в пределах маршрута или модели?
{
"location": {
"coordinates": [
-122.41941550000001,
37.7749295
]
}
Координаты затем собирают из запроса по экспресс:
module.exports.create = function(req, res, next) {
var coordinates = req.body.location.coordinates;
....
Затем эти данные представлены в модели Mongoose. Я пишу тесты против этого, где отсутствует координаты location.coordinates, например.
{
"foo": {
"bar": [
-122.41941550000001,
37.7749295
]
}
Это то сбой в разделе проверки модели с:
locationSchema.path('location.coordinates').validate(function(coordinates){
^
TypeError: Cannot call method 'validate' of undefined
Так что мой вопрос, как бы я проверить, что вход является правильным? Должно ли это быть сделано на маршруте, прежде чем попасть в модель, или это должно быть сделано в модели? Любые примеры того, как можно было бы оценить.
Для справки модель Mongoose выглядит примерно так:
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.');
Определенно сохраняя это как фрагмент! – xShirase
@ jmar777 - это супер полезный. Представляя, что слой абстракции имеет смысл в моем приложении. Спасибо, что нашли время поделиться своими мыслями, вот что мне очень помогло! – Ben