javascript - Node.js 错误 MissingSchemaError:尚未为模型“用户”注册模式。使用 mongoose.model(name, schema)
问题描述
我正在为我的聊天应用程序创建登录系统,但我遇到了错误 MissingSchemaError:模式尚未为模型“用户”注册。使用 mongoose.model(name, schema) 我正在关注教程,我使用了与教程相同的代码,这里是代码:
用户控制器.js:
const mongoose = require('mongoose')
const User = mongoose.model('User');
const sha256 = require('js-sha256')
const jwt = require('jwt-then')
exports.register = async (req, res) => {
const {name, email, password} = req.body
const emailRegex = /@gmail.com|@yahoo.com|@hotmail.com|@outlook.com|@live.com/
if (!emailRegex.test(email)) throw 'Your Email domain is not supported.'
if (password.length < 6) throw 'Your password needs to be at least 6 characters long.'
const userExists = await User.findOne({
email,
})
if (userExists) throw 'User already exists.'
const user = new User({ name, email, password: sha256(password + process.env.SALT),
})
await user.save()
res.json({
message: 'User [' + name + '] registered successfully!'
})
}
exports.login = async (req, res) => {
const { email, password } = req.body
const user = await User.findOne({
email,
password: sha256(password + process.env.SALT),
})
if (!user) throw 'Email and Password doesnt`t match!'
const token = await jwt.sign({id: user.id}, process.env.SECRET)
res.json({
message: 'User logged in successfully!',
token,
})
}
解决方案
Mongoose 中的一切都以 Schema 开始。每个模式映射到一个 MongoDB 集合并定义该集合中文档的形状。
首先,您需要为您的用户模型定义一个模式。
User.js
在您的models
目录中创建一个文件,
import mongoose from 'mongoose'
const { Schema } = mongoose
const userSchema = new Schema({
name: String,
password: String,
email: String,
})
export default mongoose.model('user', userSchema)
现在在你的userControllers.js
使用const User = require('./models/User')
中使用你的模型。
推荐阅读
- jquery - 对文件名的 jquery 更改在 firefox 和 chrome 上的行为不同
- loops - Userform - Catia VBA - 循环遍历文本框
- php - PHP Mobile Camera Upload Not Working
- django - Django Restful API 设计验证逻辑
- javascript - 找不到在 docker 环境中运行的节点 js 应用程序的模块错误
- mysql - 如果忘记分号,则更新 Postgres psql 提示
- rcpp - 如何检查列表是否递归地包含列表
- python - Pyspark在第二个数据框中加入多行数据框
- javascript - 如何在反应中创建更多状态?反应状态的属性数量是固定的吗?
- makefile - gnu make,包含`include`指令的路径