我有一个REST API资源,可以接受JSON POST请求。例如:
{
"location": {
"coordinates": [
-122.41941550000001,
37.7749295
]
}
接着,在Express中从请求中收集坐标信息:
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.');