Проблема с распознаванием схемы в node.js

#javascript #node.js #mongodb #mongoose

#язык JavaScript #node.js #mongodb #мангуст

Вопрос:

Я пытаюсь создать страницу входа в систему и отправить информацию в базу данных Mongodb. Но я сталкиваюсь с ошибкой ссылки и понятия не имею, почему. Моя схема Мангуста выглядит следующим образом:

 var mongoose = require('mongoose'); var Schema = mongoose.Schema;  var validateEmail = function(email) {  var re = /^w ([.-]?w )*@w ([.-]?w )*(.w{2,3}) $/;  return re.test(email) };  var userSchema = new Schema({  full_name: { type: String, required: [true, 'Full name must be provided'] },  email: {  type: String,  Required: 'Email address cannot be left blank.',  validate: [validateEmail, 'Please fill a valid email address'],  match: [/^w ([.-]?w )*@w ([.-]?w )*(.w{2,3}) $/, 'Please fill a valid email address'],  index: {unique: true, dropDups: true}  },  password: { type: String , required: [true, 'Password cannot be left blank']},  dob: { type: Date , required: [true, 'Date of birth must be provided']},  country: { type: String , required: [true, 'Country cannot be left blank.']},  gender: { type: String , required: [true, 'Gender must be provided']}, });  module.exports = mongoose.model('Users', userSchema);  

Когда я пытаюсь запустить следующий код, я получаю сообщение:

**var Пользователь = мангуст.модель(«Пользователи», UserSchema);

Ошибка ссылки: параметр UserSchema не определен**

 var mongoose = require('mongoose'); var crypto = require('crypto'), hmac, signature; const { check, validationResult } = require('express-validator/check'); const { matchedData, sanitize } = require('express-validator/filter');  var User = mongoose.model('Users', userSchema);  /* POST user registration page. */ router.post('/register',[   check('full_name','Name cannot be left blank')  .isLength({ min: 1 }),   check('email')  .isEmail().withMessage('Please enter a valid email address')  .trim()  .normalizeEmail()  .custom(value =gt; {  return findUserByEmail(value).then(User =gt; {  //if user email already exists throw an error  })  }),  check('password')  .isLength({ min: 5 }).withMessage('Password must be at least 5 chars long')  .matches(/d/).withMessage('Password must contain one number')  .custom((value,{req, loc, path}) =gt; {  if (value !== req.body.cpassword) {  // throw error if passwords do not match  throw new Error("Passwords don't match");  } else {  return value;  }  }),  check('gender','Please select gender')  .isLength({ min: 1 }),  check('dob','Date of birth cannot be left blank')  .isLength({ min: 1 }),   check('country','Country cannot be left blank')  .isLength({ min: 1 }),   check('terms','Please accept our terms and conditions').equals('yes'), ], function(req, res, next) {  const errors = validationResult(req);  if (!errors.isEmpty()) {   res.json({status : "error", message : errors.array()});  } else {  hmac = crypto.createHmac("sha1", 'auth secret');  var encpassword = '';  if(req.body.password){  hmac.update(req.body.password);  encpassword = hmac.digest("hex");  }  var document = {  full_name: req.body.full_name,  email: req.body.email,  password: encpassword,  dob: req.body.dob,  country: req.body.country,  gender: req.body.gender,  calorie: req.body.calorie,  salt: req.body.salt  };   var user = new User(document);  user.save(function(error){  console.log(user);  if(error){  throw error;  }  res.json({message : "Data saved successfully.", status : "success"});  });  } }); function findUserByEmail(email){  if(email){  return new Promise((resolve, reject) =gt; {  User.findOne({ email: email })  .exec((err, doc) =gt; {  if (err) return reject(err)  if (doc) return reject(new Error('This email already exists. Please enter another email.'))  else return resolve(email)  })  })  } } module.exports = router;```  Any ideas why the schema can't be found. (Im new to node.js and webframeworks)  

Комментарии:

1. Потому userSchema что не определено в вашем втором файле. Почему вы воссоздаете User модель в другом файле?

2. Потому что я не смогу создавать новых пользователей, если я этого не сделаю

3. Вам требовался этот файл схемы?