koa框架27 生成管理员账号
生成管理员账号一般如果自己手动去改文件,设置一个name一个password也行,但是太麻烦了,node有一个模块,可以以问题得形式询问用户,然后用户输入内容,回车后会触发一个回调,回调的参数就是用户输入的内容。
首先我们需要引入一个官方的模块:readline;
libs/rl.js
const readline = require("readline");
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.questionAsync = function(question) {
return new Promise((resolve, reject) => {
rl.question(question, val => {
resolve(val);
})
});
}
rl.on('close', function () {
process.exit(0);
});
module.exports = rl;
由于我们需要在外面使用这个模块,创建了一个自定义的questionAsync 方法。
需要注意一点,如果我们不手动关闭这个模块的话,会一直输入,所以要监听close事件,这个事件是预设好的,但是退出方法要自己写,所以要有一个回调函数。‘
utils/add_admin.js
由于创建账号是一个工具,所以我们丢到utils里面
const rl = require("../libs/rl");
const mysql = require("../libs/mysql");
const password = require("../libs/password");
(async () => {
let flge = true;
let db = await mysql;
while (flge) {
let name = await rl.questionAsync("账号:");
if (!name) {
console.log("账号不能为空!");
continue;
}
let sql_name = await db.query("SELECT * FROM admin_table WHERE username=?", [name]);
if (sql_name.length) {
console.log("账号已存在");
continue;
}
let pass = await rl.questionAsync("密码:");
while (!pass) {
console.log("密码不能为空!");
pass = await rl.questionAsync("密码:");
}
await db.query("INSERT INTO admin_table (username,password) VALUES(?,?)", [name, password(pass)]);
console.log("管理员账号创建成功!");
//结束循环
flge = false;
}
//退出提示
rl.close();
})();
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据