You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+MongoDB用户注册报错:TypeError: Scheme is not a function

问题分析与修复

错误根源

你遇到的TypeError: Scheme is not a function,本质是两个关键错误导致:

  1. database.js导出对象错误:你导出的是mongoose.connection连接对象,但模型文件需要完整的mongoose实例来调用model和Schema方法。
  2. utente.js导入与Schema使用错误:错误解构Mongoose,同时将connection对象当作mongoose实例使用,导致无法正确调用Schema构造函数。

修复步骤

1. 修改database.js,导出mongoose实例

将文件最后一行的导出对象改为mongoose本身,而非connection:

var mongoose = require('mongoose');

mongoose.connect("mongodb+srv://db:password@eonesports.veiykkq.mongodb.net/?retryWrites=true&w=majority", {useNewUrlParser: true});

var conn = mongoose.connection;

conn.on('connected', function() {
    console.log('Database connesso');
});
conn.on('disconnected',function(){
    console.log('Database disconnesso');
})
conn.on('error', console.error.bind(console, 'Errore di connessione:')); // 原事件名'Errore'改为小写'error',才能正确捕获连接错误

module.exports = mongoose; // 导出完整mongoose实例

2. 修改utente.js,正确使用mongoose实例

移除不必要的Mongoose解构,直接用导入的mongoose实例定义Schema和模型:

const mongoose = require("./database"); // 现在导入的是完整mongoose实例

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

const Utente = mongoose.model("Utente", UtenteSchema);

module.exports = Utente;

额外提示

建议给Schema字段添加验证规则(比如required: true),避免存入无效数据;同时注意数据库连接字符串里的密码要替换为真实密码。

内容的提问来源于stack exchange,提问作者kevinpcf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:15:38