Node.js+MongoDB用户注册报错:TypeError: Scheme is not a function
问题分析与修复
错误根源
你遇到的TypeError: Scheme is not a function,本质是两个关键错误导致:
- database.js导出对象错误:你导出的是
mongoose.connection连接对象,但模型文件需要完整的mongoose实例来调用model和Schema方法。 - 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
相关产品推荐
相关产品推荐

