【第四章】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去操作数据

 

整个流程还在思考和构思中。

posted on 2017-04-24 11:24  N1coco  阅读(147)  评论(0)    收藏  举报