[英]Cast to string failed for value type(Array) at path. This error appear when i pass String in university variable in Schema
这是我输入所有数据并希望将数据发布到数据库时的错误。 但是由于这个 API 每次都会崩溃。 当我设置(大学:对象)时,它在数据库中给了我一个空数组。
**This Error comes every time**
G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:3054
this.$__.validationError = new ValidationError(this);
^
ValidationError: teachersignups validation failed: university: Cast to string failed for value "[
{ id: 0, label: 'select University', name: 'Select University' },
{ id: 1, label: 'NUML', name: 'NUML University' },
{ id: 2, label: 'NUST', name: 'NUST' },
{ id: 3, label: 'BAHRIA', name: 'BAHRIA' },
{ id: 4, label: 'COMSATT', name: 'COMSATT ISLAMABAD' },
{ id: 5, label: 'FAST', name: 'FAST' }
]" (type Array) at path "university"
at Document.invalidate (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:3054:32)
at model.$set (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:1409:12)
at model.$set (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:1092:16)
at model.Document (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:166:12)
at model.Model (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\model.js:119:12)
at new model (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\model.js:4999:15)
at G:\Exam Ground\ExamGround_backend\index.js:11:17
at Layer.handle [as handle_request] (G:\Exam Ground\ExamGround_backend\node_modules\express\lib\router\layer.js:95:5)
at next (G:\Exam Ground\ExamGround_backend\node_modules\express\lib\router\route.js:144:13)
at Route.dispatch (G:\Exam Ground\ExamGround_backend\node_modules\express\lib\router\route.js:114:3) {
errors: {
university: CastError: Cast to string failed for value "[
{ id: 0, label: 'select University', name: 'Select University' },
{ id: 1, label: 'NUML', name: 'NUML University' },
{ id: 2, label: 'NUST', name: 'NUST' },
{ id: 3, label: 'BAHRIA', name: 'BAHRIA' },
{ id: 4, label: 'COMSATT', name: 'COMSATT ISLAMABAD' },
{ id: 5, label: 'FAST', name: 'FAST' }
]" (type Array) at path "university"
at SchemaString.cast (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\schema\string.js:603:11)
at SchemaType.applySetters (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\schematype.js:1201:12)
at model.$set (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:1367:22)
at model.$set (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:1092:16)
at model.Document (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\document.js:166:12)
at model.Model (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\model.js:119:12)
at new model (G:\Exam Ground\ExamGround_backend\node_modules\mongoose\lib\model.js:4999:15)
at G:\Exam Ground\ExamGround_backend\index.js:11:17
at Layer.handle [as handle_request] (G:\Exam Ground\ExamGround_backend\node_modules\express\lib\router\layer.js:95:5)
at next (G:\Exam Ground\ExamGround_backend\node_modules\express\lib\router\route.js:144:13) {
stringValue: '"[\n' +
" { id: 0, label: 'select University', name: 'Select University' },\n" +
" { id: 1, label: 'NUML', name: 'NUML University' },\n" +
" { id: 2, label: 'NUST', name: 'NUST' },\n" +
" { id: 3, label: 'BAHRIA', name: 'BAHRIA' },\n" +
" { id: 4, label: 'COMSATT', name: 'COMSATT ISLAMABAD' },\n" +
" { id: 5, label: 'FAST', name: 'FAST' }\n" +
']"',
messageFormat: undefined,
kind: 'string',
value: [
{
id: 0,
label: 'select University',
name: 'Select University'
},
{ id: 1, label: 'NUML', name: 'NUML University' },
valueType: 'Array'
}
},
_message: 'teachersignups validation failed'
}
Node.js v18.4.0
[nodemon] app crashed - waiting for file changes before starting...
这是我在大学变量上得到错误的模式。在这里我传递了字符串,这就是我得到错误的原因。
架构
const mongoose = require('mongoose');
const TeacherSchema = mongoose.Schema({
employee_id: String,
first_name: String,
last_name: String,
university: String, //here the error comes when i select the university then the error appear cast to string failed for value
email: String,
password: String
});
module.exports = mongoose.model('teachersignups', TeacherSchema);
这是 object ,每当用户想要 select 大学时,我都想在模式中传递它。这里我所有的大学列表都设置为 object 格式。
Object 阵列文件
export const university = [
{
id: 0,
label: 'select University',
name: 'Select University',
},
{
id: 1,
label: 'NUML',
name: 'NUML University',
},
{
id: 2,
label: 'NUST',
name: 'NUST',
},
{
id: 3,
label: 'BAHRIA',
name: 'BAHRIA',
},
{
id: 4,
label: 'COMSATT',
name: 'COMSATT ISLAMABAD',
},
{
id: 5,
label: 'FAST',
name: 'FAST',
},
]
This js file uses Tailwind CSS where I use map function the get the university objects and onChange I pass the function university_handler. 新升 Html
<div className="mb-2">
<select id="uni" className="form-control w-full px-4 py-2 text-base font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none"
value={university.id} onChange={university_Handler}>
{university.map((option) => (
<option id="option" value={option.label} key={option.id}> {option.name}</option>
))}
</select>
{universityError? <span className="text-red-600 ">Select University</span>:null}
</div>
这是 university_handler function
密码处理程序 function
const university_Handler = (e) => {
let item = e.target.value;
console.log(item)
if (item != null)
{
set_universityError(false);
set_university(item);
} else {
set_universityError(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.