mongodb - 使用默认文档 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
})
解决方案
您可以使用脚本(例如 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');
希望对你有帮助 !
推荐阅读
- vhdl - 初始化 VHDL 数组元素
- javascript - 纱线全局命令给出奇怪的输出
- c# - 尝试使用 ftp 和 clickonce 在 vs 中发布我的应用程序,但似乎无法连接到主机网站并出现以下错误
- haskell - 两个列表递归的最后一个元素
- android - 在 Android 模拟器中,“物理”系统按钮按下被忽略 - 我该如何解决这个问题?
- python - 当我运行代码时 Python 停止响应
- php - 为什么协议缓冲区生成的 PHP 类在使用嵌套消息时包含 hasField() 和 clearField() 函数?
- javascript - 什么可能导致我的画布游戏上的鼠标位置出现这种偏移?
- cmake - 安装 horovod 时 Ubuntu 20.04 cmake 权限被拒绝
- python - 为什么我在 PyCharm 中不断收到“未解决的对‘结果’的引用”?