MongoDB Автоинкремент как идентификатор для новых пользователей - PullRequest
0 голосов
/ 10 марта 2020

Я работаю над небольшим проектом Web-API с использованием MongoDB. Насколько я знаю, MongoDB использует _id: UnixDateET C, но мне нужен идентификатор, который, как в MySQL или M SQL, может автоматически увеличиваться при каждом создании нового пользователя. Я поэкспериментировал с «find (). Count ()», нашел несколько попыток для inte rnet, но, похоже, ничего из того, что я пробовал, не работает. Я не совсем уверен, что я делаю это неправильно или это невозможно сделать, как будто я их попробовал. (Моя попытка может быть найдена в разделе "models / user. js": id)

Любые предложения, как я могу напрямую go внести в схему, посчитать ее записи и затем добавить ее в новую запись без какая-то сложная новая отдельная функция? Причина в том, что я стараюсь держать модели в чистоте / читабельности.

Заранее спасибо.

маршруты / пользователь. js:

let mongoose = require('mongoose');
let User = require('../models/user');
var config = require('../configs/config');
var jwt = require('jsonwebtoken');
var bcrypt = require('bcryptjs');


function userRegistration(req, res) {
    var hashedPassword = bcrypt.hashSync(req.body.psw, 10);
    var user = new User(req.body);
    user.psw = hashedPassword;
        user.save(function (err) {      
            if (err) return res.status(500).send("There was a problem registering the user.");
            var token = jwt.sign({ id: user.userName }, config.secret, {
                    expiresIn: 86400 // expires in 24 hours
            });
                  res.status(200).send({ auth: true, token: token });        
  });
}

//export all the functions
module.exports = { userRegistration };

модели / пользователь. js:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var UserSchema = new Schema({
    id: this.db.id.find().count() + 1,
    userName: String,
    psw: String,
    email: String , 
    active : Boolean
});




module.exports = mongoose.model('User', UserSchema);

1 Ответ

0 голосов
/ 11 марта 2020

Получил работу.

Мне нужно было создать предварительное сохранение в моих "/ models / user. js"

модель / пользователь. js:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;


var UserSchema = new Schema({
    id: Number,
    userName: String,
    psw: String,
    email: String , 
    active : Boolean
});


UserSchema.pre("save", function(next){
    var docs = this;
    mongoose.model('User', UserSchema).countDocuments(function(error, counter){
        if(error) return next(error);
        docs.id = counter+1;
        next();
    });   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...