繁体   English   中英

路径中的值类型(数组)转换为字符串失败。 当我在架构中的大学变量中传递字符串时出现此错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM