Я работаю с NodeJS и MongoDB, чтобы создавать API, которой он помогал бы мне регистрировать пользователи и в момент реестра произвелся accessToken для того, чтобы держался сеанс пользователя. Я нашел код, чтобы этого добиваться и оно я функционировало чуда, но я взял пару недель отдыха и сейчас, когда я вновь снова возьму проект то, что происходит, состоит в том, что приложение только позволяет мне в том, чтобы осматривать человека, если я пробую регистрировать другую, меня производит ошибка
E11000 удвойся key ошибка collection: carlosescobar.usuarios index: username_1 dup key: {: null }
Не если я был должен в обновление, в консоли, когда я инициализирую сервер, у меня выходит следующее сообщение:
(node:10868) DeprecationWarning: current Сервер Дисковери and Monitoring engine is deprecated, and will be переместите in в future версию. To использовал the new Сервер Дисковер and Monitoring engine, pass option { useUnifiedTopology: true } to the строительный MongoClient.
Я оставляю им код модели BD:
var mongoose = require('mongoose');
const Schema = mongoose.Schema;
mongoose.set('useCreateIndex', true);
var UsuariosSchema = new Schema({
name: {
type: String, //Tipo de dato
required: true, //El campo es obligatorio
trim: true //Los espacios serán eliminados
},
email: {
type: String,
required: true,
trim: true,
unique: true //El elemento debe ser unico y no repetirse
},
password: {
type: String,
required: true,
trim: true
}
}, {
timestamps: true //Guardar la fecha de creación y de actualización
});
module.exports = UsuariosSchema;
Код DAO:
const mongoose = require('mongoose');
const usuariosSchema = require('../models/usuarios');
usuariosSchema.statics = {
create: function (data, cb) {
const user = new this(data);
user.save(cb);
},
login: function (query, cb) {
this.find(query, cb);
}
}
const usuariosModel = mongoose.model('Usuarios', usuariosSchema);
module.exports = usuariosModel;
Код Controller:
'use strict'
var Usuarios = require('../dao/usuarios');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const SECRET_KEY = 'secretkey123456';
var controller = {
// METODO PARA REGISTRAR USUARIO
RegistroUsuarios: function(req, res, next) {
const newUser = {
name: req.body.name,
email: req.body.email,
password: bcrypt.hashSync(req.body.password)
}
Usuarios.create(newUser, (err, user) => {
console.log(err);
if(err && err.code === 11000){
return res.status(409).send('El email ya esxiste');
}
if(err){
return res.status(500).send('Error del servidor');
}
const expiresIn = 24 * 60 * 60;
const accessToken = jwt.sign({ id: user.id },
SECRET_KEY, {
expiresIn: expiresIn
});
const dataUser = {
name: user.name,
email: user.email,
accessToken: accessToken,
expiresIn: expiresIn
}
// response
res.send({ dataUser });
});
}
Код Routers:
'use strict'
var express = require('express');
var UsuariosController = require('../controllers/usuarios');
var router = express.Router();
//Rutas POST
router.post('/register', UsuariosController.RegistroUsuarios);
router.post('/login', UsuariosController.loginUser);
//Rutas GET
router.get('/users', UsuariosController.getUsers);
module.exports = router;
Заметь: Также я хочу упомянуть о том, что, если я удаляю пользователь, который у меня есть в BD, и я пробую больше реестров, меня осматривает только один новый пользователь, когда я пробую регистрировать другой, не позволяет это мне и у меня выходит ошибка E11000.
Она soluciГіn - это простое, удалять ее colecciГіn (таблица) и вновь создавать ее. Моя проблема - что realicГ© изменения в cГіdigo, чтобы тестировать что-то различное, despuГ©s, делать доказательства volvГ, - когда тот же самый добавлять cГіdigo, что было вначале это generГі у конфликта в ней colecciГіn.