首页 > 解决方案 > 从 nodejs 在 mongdb 中创建集合

问题描述

我正在将模式从模型传递到控制器。我想在 MongoDB 中创建一个集合,作为发布后的特定 JSON 响应。

模型:-

const mongoose = require ('mongoose');
const bcryptt = require('bcryptjs');
const crypto = require('crypto');

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."
                }
});

mongoose.model('Admin', adminSchema);

所以在这里我用来在companyName​​制器中创建 compantID :-

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;


//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;
console.log(valueNum);

    admin.save((err, doc) =>{
        if(!err){
            res.send(doc);
            //todo something here to generate collection from valueNum
        }
        else{
            if (err.code == 11000)
                    res.status(422).send(["Entered duplicate email address. Please check"]);
            else
            return next(err);
            }
    });
}

所以我要companyID进去了valueNum。当admin.save我想传入一些代码来创建现有数据库valueNum中任何唯一的新集合时。valueNum如果数据库中已经存在特定valueNum的集合,则跳过。

这些都将发生在同一个 URL 命中。我得到的回应:-

{
    "_id": "5c874d88497ed26f233ffad5",
    "companyName": "Meta",
    "email": "xyzt@test.com",
    "fullName": "Aron",
    "companyID": "14624",

}

我怎样才能做到这一点?

标签: node.jsmongodbexpressmongoose

解决方案


请参考这篇文章,我认为它可能对您的问题有所帮助。

使用 Mongoose 动态创建集合


推荐阅读