【问题标题】:Create collections in mongdb from nodejs从节点 js 在 mongodb 中创建集合
【发布时间】:2019-08-02 14:08:52
【问题描述】:

我正在将模式从模型传递到控制器。我想在 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);

所以我在这里使用companyNamecontroller中创建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);
            }
    });
}

所以我在valueNum 中得到companyID。在admin.save 上,我想在一些代码中传递valueNum 以创建任何唯一valueNum 将在现有数据库中的新集合。如果数据库中已存在特定 valueNum 的集合,则跳过。

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

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

}

我怎样才能做到这一点??

【问题讨论】:

  • 我不明白你在这里想说什么。您要创建一个新的单独文档来保存 valueNum 的值,还是需要创建一个具有唯一 valueNum 的管理文档?
  • @TRomesh 不,我只是想在我现有的数据库中创建集合名称为valueNum 例如:我有valueNum 数据为:“34500”。然后必须创建 34500 名称集合并继续。但如果已经找到 34500 名称集合,则跳过该函数。

标签: node.js mongodb express mongoose


【解决方案1】:

您是在尝试创建集合还是新的单独文档?我不是很理解你的问题。

如果您尝试创建一个新文档,这会很有意义。

【讨论】:

  • 我想在数据库中创建新的集合。集合名称将是我得到的valueNum 的值。
【解决方案2】:

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

Dynamically create collection with Mongoose

【讨论】:

  • 好的,我正在处理它
猜你喜欢
  • 1970-01-01
  • 2021-06-13
  • 2019-08-03
  • 1970-01-01
  • 2015-10-07
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多