【第四章】BCMS中通过自写的file系统进行数据操作
自己的file的ADUR的基础操作组件已经完成,那么该如何进行使用,来进行数据操作呢?这就是这个章节中要记录的。
这里记录的是初始化超级管理员的操作:

在点击“初始化”按钮的时候,会发起一条请求并在user文件中创建一个超级管理员的用户。
整个流程如下:
1.初始化请求发送至服务端,路由接收到请求:
route 中的init.js
const express = require('express')
const router = express.Router()
const qs = require('querystringify')
const apis = require('./apis')
const initAdmin = apis.initAdmin
const send = function(res, data) {
console.log('data ::::: ', data)
res.json(data)
}
const success = function(res) {
send(res, {
code: 0,
msg: '执行成功'
})
}
router.post('/admin', function(req, res) {
// console.log(' admin :::: ', admin)
const ret = initAdmin()
if(ret) {
send(res, {
code: 100,
msg: '管理员初始化失败',
err: ret
})
} else {
success(res)
}
})
module.exports = router
这里initAdmin负责传递请求数据,当然这条请求是没有没有参数的,
接下来去执行initAdmin的操作:
const initAdmin = function() { return handleStore('initAdmin') }
这里有一个handleStore的函数,是为了根据不同的储存环境去执行不同的操作方式:
const mongoose = require('mongoose')
const db_link = require('./db/setting').getConnect()
const dbMethods = require('./db')
const fileMethods = require('./files')
const storeStyle = process.env.STORE_STYLE
const env = process.env.NODE_ENV
const handleStore = function(method, params) {
console.log('method :::: ', method, params)
if(storeStyle === 'file') {
return fileMethods[method](params)
}
if(storeStyle === 'mongo') {
try {
mongoose.connect(db_link)
return dbMethods[method](params)
} catch (err) {
console.log(' there is an error when connect to mongo :::: ====>>> ', err)
console.log(' try to start your mongodb, or change the value of the store style in the webpack config')
}
}
}
module.exports = {
handleStore: handleStore
}
这里选择的是file,所以会去执行file中的文件操作:
const user = require('./user')
const saveUser = user.save
const getUsers = user.getList
const initAdmin = user.initAdmin
module.exports = {
saveUser: saveUser,
getUsers: getUsers,
initAdmin: initAdmin,
}
这里又去执行file中的user里的initAdmin的操作:
/** * 用户状态说明: * 1: 正常 * 2: 禁用 * 3: 删除 */ const namespace = 'user' const robot = require('../file.robot') var superAdmin = require('../file.config').superAdmin var uuid = require('../utils').getId module.exports = { getList: function() { // const const users = robot.readFile('user') console.log(' user :::: ', users) return users }, saveUser: function() { }, initAdmin: function() { console.log('initAdmin ::::: ==========>>>> ') const emptyArr = [] superAdmin._id = uuid() emptyArr.push(superAdmin) robot.modify(namespace, JSON.stringify(emptyArr)) } }
这一步执行完,终于可以去调用file中的基础操作了,通过modify方法将数据存起来。
回顾一下流程:
1.点击请求
2.路由接收
3.根据储存中间件去选择操作类型
4.file中的user的init执行相关的数据处理
5.调用robot去操作数据
整个流程还在思考和构思中。
浙公网安备 33010602011771号