从节点js在mongodb中创建集合

问题描述 投票:0回答:2

我将模式从模型传递给控制器​​。我想在post上创建一个MongoDB中的集合,特别是来自pa的特定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将在现有数据库中的新集合。如果使用DB中已存在的特定valueNum进行收集,则跳过。

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

{
    "_id": "5c874d88497ed26f233ffad5",
    "companyName": "Meta",
    "email": "[email protected]",
    "fullName": "Aron",
    "companyID": "14624",

}

我怎么能实现这个?

node.js mongodb express mongoose
2个回答
0
投票

您是否尝试创建集合或新的单独文档?我真的不明白你的问题。

如果您尝试创建新文档,那将非常有意义。


0
投票

请参考这篇文章,我认为这可能有助于解决您的问题。

Dynamically create collection with Mongoose

© www.soinside.com 2019 - 2024. All rights reserved.