使用默认文档mongo创建集合

时间:2019-06-29 09:22:52

标签: mongodb mongoose

我想在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
})

1 个答案:

答案 0 :(得分:1)

您可以使用脚本(例如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');

希望这对您有帮助!