Я пытаюсь создать базовую аутентификацию с помощью ReactJS. Я создал модель с помощью mongoose
, но, похоже, проблема importing/accessing
в коде моего контроллера.
/модели/user.js
const mongoose = require('mongoose')
const crypto = require('crypto')
// user schema
const userSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
required: true,
max: 32
},
email: {
type: String,
trim: true,
required: true,
unique: true,
lowercase: true
},
hashed_password: {
type: String,
required: true
},
salt: String,
role: {
type: String,
default: 'subscriber'
},
resetPasswordLink: {
data: String,
default: ''
},
}, {timestamps: true})
// virtual
userSchema.virtual('password')
.set(function(password) {
// code
})
.get(function() {
// code
})
// methods
userSchema.methods = {
// code
},
makeSalt: function() {
// code
}
};
module.exports = mongoose.model('User', userSchema)
/контроллеры/auth.js
const User = require('../models/user').schema; // import the user model
exports.signup = (req, res) => {
const{name, email, password} = req.body
User.findOne({email: email}).exec((err, user) => {
if (user) {
return res.status(400).json({
error: 'Email is taken'
})
}
})
let newUser = new User({name, email, password})
newUser.save((err, success) => {
if (err) {
console.info('SIGNUP ERROR', err)
return res.status(400).json({
error: err
})
}
res.json({
message: 'Signup sucess! Please signin'
})
})
}
Проблема: когда я запускаю npm start
в терминале, я вижу эту ошибку: throw new TypeError(Invalid schema configuration: \
${val}` is not ` +
C:\Users\john\Documents\react\mern-authentication\mern-auth-server\node_modules\mongoose\lib\schema.js:677
throw new TypeError(`Invalid schema configuration: \`${val}\` is not ` +
^
TypeError: Invalid schema configuration: `` is not a valid type at path `default`. See mongoose-schematypes for a list of valid schema types.
at Schema.add (C:\Users\john\Documents\react\mern-authentication\mern-auth-server\mern-auth-server\node_modules\mongoose\lib\schema.js:677:13)
at Schema.add (C:\Users\john\Documents\react\mern-authentication\mern-auth-server\mern-auth-server\node_modules\mongoose\lib\schema.js:728:12)
at new Schema (C:\Users\john\Documents\react\mern-authentication\mern-auth-server\mern-auth-server\node_modules\mongoose\lib\schema.js:134:10)
at Object.<anonymous> (C:\Users\john\Documents\react\mern-authentication\mern-auth-server\models\user.js:5:20)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Module.require (node:internal/modules/cjs/loader:1141:19)
at require (node:internal/modules/cjs/helpers:110:18)
Ребята, вы знаете, что может исправить terminal error
? Любая помощь приветствуется. Спасибо!
у вас ошибка типа в resetPasswordLink
.
вместо data: String
измените на type: String
, как показано ниже.
resetPasswordLink: {
type: String,
default: '',
},
//just this works for me
const User = require('../models/user');