首页 > 解决方案 > 使用默认文档 mongo 创建集合

问题描述

我想在我的 mongodb 中创建名为“Admins”的集合。问题是新管理员只能由现有管理员添加,但在初始状态下我没有任何管理员。

创建新集合时创建默认管理员最方便的方法是什么?我的架构是

const adminSchema = new Schema({
  email: {
    type: String,
    required: true,
    unique: true,
    lowercase: true
  },
  password: {
    type: String,
    required: true,
    minlength: 4,
    maxlength: 128
  },
  name: {
    type: String,
    maxlength: 50
  }
}, {
  timestamps: true
})

标签: mongodbmongoose

解决方案


您可以使用脚本(例如 seed.js)来安全地插入所需数量的用户。

            //seed.js
            var Admin = require('../path/to/admin.js');

            // you can refer any other flow to get count or number of record
            Admin.countDocuments({}, function( err, count){

                console.log( "Number of users:", count );

                // decide ur other logic

                // if count is 0 or less
                if(count <= 0) {

                    var user = {
                        name: "Admin User",
                        email: "admin@gmail.com",
                        password: "admin"
                    }

                    Admin.create(user, function(e) {
                        if (e) {
                            throw e;
                        }
                    });
                }

            })

使用最新方法,您可以使用以下方式

    try {


            // you can refer here any other method to get count or number of record
            let count = await Admin.countDocuments({});

            if(count <= 0) {
                var user = {
                    name: "Admin User",
                    email: "admin@gmail.com",
                    password: "admin"
                }
                const admin = new Admin(user);
                await admin.save()
            }

        } catch (err) {

            console.log(err);
        }

在连接到 mongodb 后立即seed.js在您的脚本中要求。server.js or app.js完成播种后评论或删除此行。

require('../path/to/seed');

希望对你有帮助 !


推荐阅读