Как исправить «Имя модели Мангуста» не является конструктором в GraphQl при изменении - PullRequest
1 голос
/ 02 апреля 2019

Мутация данных на площадке graphql говорит о том, что сообщение «Студент не является конструктором» Ошибка: «Ошибка типа: Студент не является конструктором» Студент - это моя модель Mongoose.

Я попытался переустановить мои node_modules, ища какое-то исправление на github.

Это моя функция мутации

 addStudent: async (
      root,
      { studentId, firstName, lastName, email, password },
      { Student }
    ) => {
      const newStudent = await new Student({
        studentId,
        firstName,
        lastName,
        email,
        password
      }).save();
      return newStudent;
    }

, и это моя модель Мангуста

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const StudentSchema = new Schema({
  studentId: {
    type: String,
    required: true
  },
  firstName: {
    type: String,
    required: true
  },
  lastName: {
    type: String,
    required: true
  },
  // sectionId: {
  //   type: [Schema.Types.ObjectId],
  //   ref: "Section",
  //   nullable: true
  // },
  email: {
    type: String,
    required: true
  },
  password: {
    type: String,
    required: true
  },
  createdDate: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model("Student", StudentSchema);

Ученик должен быть создан, ноэта ошибка появляется с этим сообщением.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Ждите работы над обещанием, но здесь вы передаете объект студента поэтому он возвращает Student не является конструктором

const newStudent = await new Student({
        studentId,
        ....
      }).save();

Вместо этого вы можете сделать это

1) создать объект ученика, используя append

const newStudent = new Student({})
newStudent.studentId = studentId
newStudent.firstName = firstName
newStudent.lastName = lastName
newStudent.email = email
newStudent.password = password

2) Создание объекта ученика с помощью конструктора

const newStudent = new Student({ 
    studentId,
    firstName,
    lastName,
    email,
    password
})

и сохраните, используя обещание асинхронно и ожидайте

  await newStudent.save()

или

const newStudent = await Student.create({
    studentId,
    firstName,
    lastName,
    email,
    password
})
0 голосов
/ 03 апреля 2019

Исправлена! Я должен был предоставить переменные запроса, а не вводить вручную на мутации graphql

...