从无到有创建一个聊天App六-仿QQ号生成算法
思考
实现
我们先生成10001到10099这99和账号,插入到数据库中,并在每个号码后面加上一个标志位,这样以后靓号可以标识为locked,保证不能被注册到。代码如下。
var mongoose = require(mongoose);
mongoose.connect(mongodb://127.0.0.1:27017/users);
var db = mongoose.connection;
db.on(error, console.error.bind(console, connection error:));
db.once(open, function () {
console.log("数据库连接成功");
let accountSchema = mongoose.Schema({
account: Number,
status: String
});
let accountModel = mongoose.model(account_pool, accountSchema);
for (var i = 10001; i <= 10099; i++) {
let account = new accountModel({
account: i,
status: "ok"
});
account.save(function (error, newAccount) {
if (error) {
console.log("插入 " + account + " 错误:" + error);
} else {
console.log("已成功插入 " + newAccount);
}
});
}
});
我们并非批量插入,而是一个个循环插入,其实数据插入的顺序并不是固定的,你看下log就知道了。这样也算是稍微的一点点随机,使得连续注册不会注册到连续的号码。启动数据库之后,将上面的代码保存到文件accountGen.js中运行如下命令即可生成好号码池。
node accountGen.js
同样,每次注册时候去号码池中取一个。
function createAccountNumber(callback) {
accountModel.findOneAndRemove({status: "ok"}, function (err, newAccount) {
if (err) {
console.log("createAccountNumber err:" + err);
callback(err, null)
} else if (!newAccount) {
console.log("createAccountNumber newAccount null");
callback(null, null)
} else {
console.log("createAccountNumber result:" + newAccount);
callback(null, newAccount.account)
}
})
}
大功告成!非常简单。
接下来要做的事情
目前看来系统已经可以运行了,但是却缺少了一个重要的东西:日志系统。服务器没有日志是不行的,下面我将学习如何使用log4js。
上一篇:
IDEA上Java项目控制台中文乱码
