NodeJS+Bmob+DoraCMS修改以及代码复用说明

举个栗子,比如说我现在要做bmob的college表的增删改查功能,应该怎么做呢,按照以下的顺序:

1.在views/manage下新建一个文件叫做bmobcollegeUsersList.ejs的UI文件,里面的代码如下,这里就是要注意第一行的ng-controller,自己取一个名字,比如我叫做bmobcollegeUsersList。

2.建立好后到controller.js中加一个控制器,其实这个controller只要改一下对应的ng-controller的名字就好了,其他的都不用变。比如我下面这个其实是复制DoraCMS原来会员管理的控制器,只是改了第一行的regUsersList为bmobcollegeUsersList。里面的分别是页面显示,删除条目,修改条目,新增条目的控制器,这些都是不用变的,全部可以直接复用。

3.然后我们以获取用户列表的修改举例,首先到dora.backstage.js文件看initPagination的定义,进去之后发现与getPageInfos函数有关,而它实际上是启动了一个地址为/admin/manage/getDocumentList/的路由,前面这些我们都不用变动,我们到admin.js的文件中看这个路由的定义如下,我们就是在这里下功夫该,首先我在携带可能的查询条件中添加了if(targetObj=="bmobUser")和if(targetObj=="college")的情况,后面要对其他的表做增删改查在这里添加即可。

4.在上面的最后一个if判断中,实际上就是判断我这个页面对应的内容是不是和bmob有关的,如果是,我们就调用bmobpagination函数来显示,bmobpagination我已经写好了,大家可以看一下里面的逻辑,是所有的bmob表都可以直接复用的,基本不用修改。而如果当前页面的内容是他mondb数据库的,与bmob无关,就继续调用他的pagination执行数据库操作。

5.最后修改bmobcollegeUsersList.ejs让它正常显示数据库得到的结果即可。

6.总结一下:其实我们增加一个功能,只需要增加一个对应的controller,然后找到admin.js的路由,在路由里添加一下判断条件,最后用 Dbopt.js中我们写的数据库操作的函数来进行交互就行,非常简单,这也是代码高度复用的好处。我们写Dbopt.js的函数的时候要注意保证代码的可复用性,即能同时处理多个库的请求,比如我写的bmoboagination函数,传入的参数是querystring,是在前面的路由里就由keywords得到的,我根据obj的不同生成不用的queryurl,所以这一个函数可以满足所有bmob表的显示,大家只需要把querystring确定好之后调用就可以了。

发表评论