【发布时间】:2015-09-07 15:32:55
【问题描述】:
我在这里以某种方式错误地设置了我的模型,我看不到它。我看过这个问题:
Node.js - Mongoose path validation failing - TypeError: Cannot call method 'validate' of undefined
我认为这不是我想要的解决方案。我正在尝试设置一个包含一个嵌套对象和另一个嵌套对象数组的简单文档。我不断收到此错误:
Cannot read property 'validate' of undefined
这是我要运行的代码。
var mapSchema = new Schema({
map_key : {
i : {
type : Number,
required : 'Map Key i required'
},
j : {
type : Number,
required : 'Map Key j required'
},
k : {
type : Number,
required : 'Map Key k required'
}
},
tiles : [ {
x : {
type : Number,
required : 'Tile x required'
},
y : {
type : Number,
required : 'Tile y required'
},
tile_type : {
type : Number,
required : 'Tile type required'
}
} ]
});
mapSchema.path('map_key').validate(function(value, next) {
mapService.findMap(value, function(err, map) {
if (err) {
console.log(err);
return next(false);
}
next(!map);
});
}, 'Map already created');
感谢任何帮助。谢谢!
更新:无论价值如何,我都尝试将模型简化为最简单的形式,但没有成功:
var mapSchema = new Schema({
map_key : {
i : Number,
j : Number,
k : Number
},
tiles : [ {
x : Number,
y : Number,
tile_type : Number
} ]
});
mapSchema.path('map_key').validate(function(value, next) {
mapService.findMap(value, function(err, map) {
if (err) {
console.log(err);
return next(false);
}
next(!map);
});
}, 'Map already created');
更新..再次..所以我去删除 map_key 对象并将验证器更改为 tiles 对象以尝试缩小范围。删除 map_key 对象时没有收到错误消息:
var mapSchema = new Schema({
tiles : [ {
x : Number,
y : Number,
tile_type : Number
} ]
});
mapSchema.path('tiles').validate(function(value, next) {
mapService.findMap(value, function(err, map) {
if (err) {
console.log(err);
return next(false);
}
// If the map exists, return false, else it will be null.
next(!map);
});
}, 'Map already created');
所以我的猜测是错误与 map_key 及其设置方式有关,但我仍然没有任何问题。
【问题讨论】:
标签: javascript node.js mongoose