javascript TypeError:对象不是构造函数

czfnxgou  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(195)

我尝试使用Node js应用程序和MongoDB进行用户注册,但遇到以下错误:const utente = new Utente({ ||||| TypeError: Utente is not a constructor
这是我的模型utente.js

const mongoose = require("mongoose");

const Utente = mongoose.model(
  "Utente",
  new mongoose.Schema({
    email: String,
    nome: String,
    cognome: String,
    password: String,
    admin: String,
  })
);

module.exports = Utente;

这是注册的控制器:

const { validationResult } = require("express-validator");
const { Utente } = require("../models/utente");

exports.registrazione = async (request, response, next) => {
  const errors = validationResult(request);
  if (!errors.isEmpty()) {
    return response.status(422).json({
      message: "Errore nell'Inserimento dei Dati",
      error: errors.array(),
    });
  }

  console.log("Email:", request.body.email);

  const utente = new Utente({
      email: request.body.email,
      nome: request.body.nome,
      cognome: request.body.cognome,
      password: request.body.password,
      cellulare: request.body.cellulare,
      admin: request.body.admin
  });
  
  if (utente.findOne({email: request.body.email})) {
    return response.status(400).send('Esiste già un account con questa email');
  } else {
      utente.save();

      response.status(201).json({
        messages: "Utente Registrato con Successo",
      });
  }
};

我尝试使用console.log()显示请求中的信息,信息显示正确,但出现此错误

f87krz0w

f87krz0w1#

当您指定:

module.exports = Utente;

您正在创建默认导出。因此,要导入模型,请执行以下操作:

const Utente = require("../models/utente");

请注意,Utente没有被{ }包围。
如果您确实希望以当前的方式导入Utente,则应按如下方式导出:

exports.Utente = Utente;

您共享的控制器文件也为registrazione执行此操作。

ux6nzvsh

ux6nzvsh2#

正如@Montgomery Watts中所提到的,你可以这样导出和导入:

module.exports = Utente;
const Utente = require("../models/utente");

或:

module.exports = {Utente};
const {Utente} = require("../models/utente");
    • 注意:**您可能在模型中遗漏了cellulare peroperty,或者您将其错误地放在此处:
const utente = new Utente({
  email: request.body.email,
  nome: request.body.nome,
  cognome: request.body.cognome,
  password: request.body.password,
  cellulare: request.body.cellulare,
  admin: request.body.admin
});
    • 另外:**您应该将findOnemodel一起使用,而不是与instance一起使用:
Utente.findOne({email: request.body.email})) // Utente with uppercase U

相关问题