Создание коллекций mongodb со значением ключа ответа JSON - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в MongoDb и NodeJS. Я хочу создать коллекции таблицы.

Вот мой JSON ответ: -

{
    "_id": "5c85f83516f5ad7ef3e14",
    "companyName": "XYZ",
    "fullName": "ABC",
    "designation": "Software Engineer",
    "companyID": "14224",
}

Здесь я получаю уникальный companyID для конкретного companyName. Я хочу создать столько коллекций, сколько будет уникальных companyID. Как мне добиться этого с помощью NodeJS, кода ExpressJS?

РЕДАКТИРОВАТЬ: - файл контроллера.

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.fullName = req.body.fullName;

//----creating hash token for email verification ------------
const secret = crypto.randomBytes(20);
const hash = crypto.createHmac('sha256', secret)
                   .update(secret + admin.email)
                   .digest('hex');

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

admin.companyID = valueNum;

    //saving users data to database
    admin.save((err, doc) =>{
        if(!err){
            res.send(doc);
                let coSchema = coName => {
                    return {
                        id: {type: String, index: true},
                        coName: {default: coName}
                    }
                }

                response.then((data) => {
                    let coSchema;
                    data.forEach((doc) => {
                        coSchema = coSchema(doc.companyID);
                        mongoose.model(doc.companyID, coSchema);
                    })
                }
        }
        else{
            if (err.code == 11000)
                    res.status(422).send(["Entered duplicate email address. Please check"]);
            else
            return next(err);
            }
    });
}

Модель: =

var adminSchema = new mongoose.Schema({
    companyName : {
                type: String,
                required: "Company  name can't be empty.",
                required: false
                },  
    companyID:  {
                type: String,
                unique: true
                },          
    email :     {
                type: String,
                required: "Email can't be empty.",
                unique: true
                },
    password:   {
                type: String,
                required: "First name can't be empty."
                },
    fullName: {
                type: String,
                required: "First name can't be empty."
                },
designation :   {
                type: String,
                required: "Designation can't be empty."
                }           
});

mongoose.model('Admin', adminSchema);

1 Ответ

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

определяет схему вашей компании внутри функции, которая принимает имя com и возвращает объект схемы.

скажем, ответ - это массив документов, прочитанных из базы данных, проанализируйте каждый из них и создайте коллекцию по названию компании, убедитесь, что название компании определено уникально в вашей схеме ответа

let coSchema = coName => {
	return {
		id: {type: String, index: true}, //need to have index created on some unique value to get the schema created without documents.
		coName: {default: coName}
		//add your feilds
	}
}

response.then((data) => {
	let coSchema;
	data.forEach((doc) => {
		coSchema = coSchema(doc.companyID);
		mongoose.model(doc.companyID, coSchema);
	})
})
Обрабатывайте свои обещания соответственно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...