gpt4 book ai didi

javascript - 无法读取未定义的属性 'validate'

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:59 27 4
gpt4 key购买 nike

我在这里错误地设置了模型,但我看不到它。我看过这个问题:

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');

感谢任何帮助。谢谢!

更新:无论它的值(value)如何,我都尝试将模型简化为最简单的形式,但没有成功:

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及其设置方式有关,但我仍然不知道它出了什么问题。

最佳答案

好的..所以我成功了。不完全确定为什么会这样,文档中的所有内容都按照我上面最初的方式显示。我必须将整个 map_key 对象放置在它自己的类型中。再次不确定为什么会这样,但至少我又开始运行了。这是我的解决方案,对于可能遇到类似问题的其他人来说它的值(value)。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mapService = require('../services/map-service');

var mapSchema = new Schema({
map_key : {type:{
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 Map = mongoose.model('Map', mapSchema);

module.exports = {
Map : Map
};

关于javascript - 无法读取未定义的属性 'validate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32428900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com