Создание единого логина для нескольких коллекций с использованием Mongoose Express - PullRequest
1 голос
/ 13 мая 2019

Я динамически создаю коллекции с одинаковыми деталями схемы, каждая из которых имеет детали role : admin с companyID, companyName и т. Д.

файл контроллера: -

const mongoose = require ('mongoose');
const Admin = mongoose.model('Admin');
var MongoClient = require('mongodb').MongoClient;

module.exports.registerAdmin = (req, res, next) =>{ 
    var admin = new Admin();
    admin.companyName = req.body.companyName;
    admin.email = req.body.email;
    admin.password = req.body.password;
    admin.firstName = req.body.firstName;
    admin.role = "admin";
    admin.id = req.body._id;

    const reqq = crypto.createHash('md5').update(admin.companyName).digest('hex');
    let valueNum = reqq.match(/\d/g).join("").toString().substring(0,6);

    admin.companyID = valueNum; 

    //sending data to register
    admin.save((err, doc) =>{
        if(!err){

            res.send(doc);

        //here creating collections dynamically.
            let arr = Object.keys(doc.schema.paths); //doc.schema.paths if I need same ID / obj if different
            let Obj = {};
            arr.map(key => Obj[key] = doc[key]);
            var thingSchema = new mongoose.Schema({}, { strict: false, collection: admin.companyName });
            var Thing = mongoose.model(admin.companyName , thingSchema);
            var thing = new Thing(Obj); 
            thing.save();
            console.log(thing.id);

Теперь я хочу создать пример маршрута входа в систему: baserurl/login.

Текущий файл маршрута входа в систему

Здесь я хочу передать Thing вместо Admin и перебрать каждую коллекцию.

router.post('/login' , (req, res, next) => {

    Admin.find({email: req.body.email})
    .exec()
    .then(admin => {
        if(admin.length < 1) {
            return res.status(401).json({
                message: "Auth failed. admin not found."
            })
        }

Вот так я могу войти из одной коллекции. Как я буду динамически проверять все коллекции из модели Thing и разрешать вход в систему из коллекций, созданных из конкретной thingSchema?

...