首页 > IT职业 > IT职场 > 使用fs模块编写一个简单数据库(一)-nodejs

前些日子,给一部电脑配置mysql时,深感痛苦,深思一段时间后,我痛下决心,要写一个属于自己的数据库。
额。。。这名字可以些什么呢?我一扫桌上的酸梅汤,决定了,就叫"berry-database"吧。
由于是自娱自乐,所以可以简单实现下。
将一个文件夹当成数据库,表为文件。
经过深思,这款数据库与平常数据库不同,它目前有三种存储类型,表,数组与便签。
然后开始快乐的实现。
为了能让用户快乐地使用这个数据库,所以我决定了,开始从创建数据库的命令行开始。
首先,为了能与用户交互,所以可以首先编写一个工具,名字就叫berry-tool吧。为了能更方便地编写,我们先下载一个npm包:yargs($:npm install yargs)。
为了能愉快使用,首先编写package.json文件。直接上代码:
{
"name": "berry-tool",
"version": "1.2.2",
"description": "This is a command line tool of berryDB.",
"main": "berry.js",
"directories": {
"doc": "doc"
},
"scripts": {
"test": "berry"
},
"keywords": [
"berry"
],
"bin": {
"berry": "./bin/berry.js"
},
"author": "yhzheng",
"license": "ISC",
"dependencies": {
"yargs": "^12.0.1"
}
} 在此之后,根据json文件的内容,我们创建一个bin文件夹,并创建berry.js。
因为这个数据库是简单通过fs模块进行读写操作,所以不仅需引入yargs模块,同时需引入fs模块。
然后可以确定一下该工具的内容,如下:
--create(-c) db xxx [创建数据库]
--create(-c) tab xxx [创建数据表]
--create(-c) arr xxx [创建数组]
--create(-c) nt xxx [创建便签]
--db(-d) xxx [在xx数据库]
--init(-i) xxx [初始化数据表]
--value(-v) xx,xx [初始化数据表时所需的属性]
--password(-p) xx,xx [数据库的密码] 并编写该文件开头:
#!/usr/bin/env node
var fs = require("fs");
var yargs = require('yargs');
/*
* params:
* --create(-c) db xxx [create db]
* --create(-c) tab xxx [create tab]
* --create(-c) arr xxx [create arr]
* --create(-c) nt xxx [create nt]
* --db(-d) xxx [in xx db]
* --init(-i) xxx [init tab]
* --value(-v) xx,xx [the value of tab]
* --password(-p) xx,xx [the password of db]
*/
yargs.alias('c', 'create');
yargs.alias('db', 'd');
yargs.alias('init', 'i');
yargs.alias('value', 'v');
yargs.alias('password', 'p');
var argv = yargs.argv; 由于创建数据库、数据表等文件是重中之重,所以,可以首先编写-c的内容。
查看上面,需创建的文件多种多样,使用switch语句为佳。
首先判断,如果是需创建数据库,可使用fs模块的fs.mkdirSync方法。
fs.mkdirSync(argv._[0]); 并且最好加入提示语以及防止用户输入的判断:
if (argv._[0] === undefined){
console.log("
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3005/viewspace-2804285/ ,如需转载,请注明出处,否则将追究法律责任。