An open API service indexing awesome lists of open source software.

https://github.com/leinue/mongobro

A NoSQL database in browsers(like MongoDB).
https://github.com/leinue/mongobro

Last synced: over 1 year ago
JSON representation

A NoSQL database in browsers(like MongoDB).

Awesome Lists containing this project

README

          




MongoBro开发文档


Mongobro Databases MongoDB NoSQL







1. MongoBro 介绍



MongoBro是一个基于HTML5 localStorage技术的小型Web端数据库系统, 他的整体开发思想来源于MongoDB, 但并不完全是NoSQL类型数据库, 它同样支持传统数据库系统如MySQL中的表和字段.

MongoBro的核心代码仅729行,若加上设计器也仅3000行,非常简单易用.






MongoBro 可视化工具



我们提供了一整套MongoBro的在线开发工具, 目前还在不断完善中




主界面

主界面



1. 终端



MongoBro的终端主要用来执行一些用户交互上起来比较麻烦的操作, 比如对表字段的增删查改, 对全部数据库的删除等. 基本上保持了和Linux命令行一致的体验, 当然个别地方还有待完善.




终端界面

终端主界面

终端使用


快捷键

使用Ctrl + Alt + Space呼出终端, 再次按下关闭终端



右上角按钮

右上角按钮有三种类型:

- 隐藏窗口
- 放大窗口
- 关闭窗口


标题栏

双击标题栏即可放大终端窗口


终端命令


帮助指令

- help 或 h : 输出系统当前支持的所有命令(有些命令为系统内部命令, 即使显示也不可使用)

- help [Command name] : 输出[Command name]的源代码

help

helpCommand



数据库操作指令

- add : 向指定数据库中的数据表添加字段, 用法如下:

add key to TABLE_NAME in DBNAME set FIELDS_LIST values [VALUES_LIST]
其中的TABLE_NAME为表名;DBNAME为数据库名; FIELDS_LIST为字段列表, 其格式为字段1, 字段2 ,字段3, ..., 字段N, FIELDS_LIST不可省略;VALUES_LIST为值列表, 格式为值1, 值2 ,值3, ..., 值N, VALUES_LIST可省略;
如果我要在DBNAME为mongo的数据库中向TABLE_NAME为ivydom的表插入3个字段且默认值为fuck, 则其指令如下:
add key to ivydom in mongo set f1,f2,f3 values v1,v2,v3

- remove : remove目前只有一个参数, all, 即删除所有数据库和数据表(慎用)
remove all

- rollback : 如果您不小心删了数据库, 那么我们提供了rollback方法帮助您恢复数据(注意不是您原本的数据, 而是一些测试数据, 这个方法本是为了方便调试而开发的).
rollback

- exit : 和linux ssh中的exit命令一样, 退出当前终端
exit





2. 用户交互界面



主界面


mongobro主界面

mongobro主界面

新建数据库

编辑字段值

右键菜单







MongoBro API



本部分将帮助您在实际应用中使用MongoBro, 以上内容只是帮助您体验MongoBro.




API索引



要使用MongBro, 只需要使用mongoBro类即可.MongoBro提供了42个方法供调用;

内部调用函数全部打*号,系统内部方法不建议调用,若不慎调用请使用removeAllDatabases恢复系统;

以下API全部继承自MongoBro;

mongoBro中的方法若无特殊说明则执行成功返回mongoBro自身(即支持链式调用),失败返回false




mongoBro函数原型




  1. function mongoBro(){

  2. if(!this.isMongoNull()){

  3. }else{

  4. localStorage.MongoBrowserDB = '';

  5. }

  6. }



broadcastMongoDbUpdated *



  1. mongoBro.prototype.broadcastMongoDbUpdated = function(){}


功能


通知系统Mongobro的数据库已经更新

此函数为系统内部函数,用户了解即可





broadcastMongoDbNoUpdated *



  1. mongoBro.prototype.broadcastMongoDbNoUpdated = function(){}


功能


通知系统Mongobro的数据库已经更新完毕

此函数为系统内部函数,用户了解即可





getDatabases



  1. mongoBro.prototype.getDatabases = function(){}


功能

获得系统中存在的所有数据库,返回数组,若无返回空数组



getMongoCount



  1. mongoBro.prototype.getMongoCount = function(){}


功能

获得系统中所有数据库的个数



isMongoNull



  1. mongoBro.prototype.isMongoNull = function(){}


功能

判断系统中是否已有数据库



getMongoObj



  1. mongoBro.prototype.getMongoObj = function(){}


功能

getDatabases的原型实现



isDbExists



  1. mongoBro.prototype.isDbExists = function(dbname){}


功能

判断dbname是否存在,存在返回true,否则返回false



writeMongoObj *



  1. mongoBro.prototype.writeMongoObj = function(str){}


功能


将str写回到localStorage中

此函数为系统内部函数,用户了解即可





createDB



  1. mongoBro.prototype.createDB = function(dbname){}


功能

创建数据库名为dbname的数据库



updateDB



  1. mongoBro.prototype.updateDB = function(original_name,new_name){}


功能

更改数据库名为original_name的数据库为original_name



isExists



  1. mongoBro.prototype.isExists = function(){}


功能

isDBExists的原型实现



use



  1. mongoBro.prototype.use = function(dbname){}


功能

使用数据库dbname, 调用此函数后系统会记录当前数据库为用户指定的数据库



getCurrentDBName



  1. mongoBro.prototype.getCurrentDBName = function(){}


功能

获得当前的数据库名



setCurrentDBName



  1. mongoBro.prototype.setCurrentDBName = function(dbname){}


功能


设置当前数据库名,为use的底层实现

此函数为系统内部函数,用户了解即可





removeDB



  1. mongoBro.prototype.removeDB = function(dbname){}


功能

删除数据库名为dbname的数据库



removeAllDatabases



  1. mongoBro.prototype.removeAllDatabases = function(){}


功能

清空系统中存在的所有数据库



isTableNull



  1. mongoBro.prototype.isTableNull = function(){}


功能

判断当前数据表是否为空



writeMongoTableDB *



  1. mongoBro.prototype.writeMongoTableDB = function(obj){}


功能


将数据表数据写回到localStorage

此函数为系统内部函数,用户了解即可





addTableList *



  1. mongoBro.prototype.addTableList = function(database,tableName){}


功能


系统内部记录当前的数据库,数据表信息

此函数为系统内部函数,用户了解即可





removeTableList *



  1. mongoBro.prototype.removeTableList = function(database,tableName){}


功能


系统内部记录数据库,数据表信息的删除操作

此函数为系统内部函数,用户了解即可





removeAlltableList *



  1. mongoBro.prototype.removeAlltableList = function(){}


功能


删除系统内部数据库,数据表记录信息

此函数为系统内部函数,用户了解即可





updateTableList *



  1. mongoBro.prototype.updateTableList = function(dbname,oldName,newName){}


功能


系统内部记录数据库,数据表信息的更新操作

此函数为系统内部函数,用户了解即可





getTableList *



  1. mongoBro.prototype.getTableList = function(){}


功能


获取系统内部记录数据库,数据表信息

此函数为系统内部函数,用户了解即可





isTableUpdated *



  1. mongoBro.prototype.isTableUpdated = function(){}


功能


获得系统内部表是否更新

此函数为系统内部函数,用户了解即可





broadcastMongoDbTableUpdated *



  1. mongoBro.prototype.broadcastMongoDbTableUpdated = function(){}


功能


通知系统数据表已更新

此函数为系统内部函数,用户了解即可





broadcastMongoDbTableNoUpdated *



  1. mongoBro.prototype.broadcastMongoDbTableNoUpdated = function(){}


功能


通知系统数据表已更新完毕

此函数为系统内部函数,用户了解即可





createTable



  1. mongoBro.prototype.createTable = function(dbname,tableName,data){}


功能

创建数据库名为dbname,数据表为tableName,数据为data的数据表

dbanme: 数据库名

tableName: 数据表名

data: 要加入的数据(数组)

如果dbname不存在, 则返回false;

如果tableName为空, 则返回false;

若执行成功, 则返回mongoBro



isTableExists



  1. mongoBro.prototype.isTableExists = function(dbname,tableName){}


功能

判断数据表是否存在,若存在则返回true,否则返回false



updateTable



  1. mongoBro.prototype.updateTable = function(dbname,oldName,newName){}


功能

更新数据库名

dbname: 数据库名

oldName: 旧名字

newName: 新名字

执行失败返回false,执行成功返回mongoBro



removeTable



  1. mongoBro.prototype.removeTable = function(dbname,tableName){}


功能

删除数据表

dbane: 数据库名

tableName: 数据表名

执行失败返回false,执行成功返回mongoBro



getTableByDBName



  1. mongoBro.prototype.getTableByDBName = function(dbanme){}


功能

获得某数据库下的所有数据表

dbname: 数据库名

执行失败返回false,执行成功返回数据表列表(数组)



getTableCollection



  1. mongoBro.prototype.getTableCollection = function(tableName){}


功能

获得某数据表的所有记录

tableName: 数据表名

执行失败返回false,执行成功返回记录列表(数组)



getTableCollectionBy *



  1. mongoBro.prototype.getTableCollectionBy = function(dbname, tableName, key, val, like){}


功能


查询数据表中的某字段

dbname: 数据库名

tableName: 数据表名

key: 要查询的字段

val: 字段对应的值

like: 是否启用模糊搜索

执行成功返回对应的数组,否则返回false

    此函数为系统内部函数,用户了解即可





getTableCollectionById *



  1. mongoBro.prototype.getTableCollectionById = function(dbname, tableName, val){}


功能


根据表ID查询数据表中的某字段

dbname: 数据库名

tableName: 数据表名

key: 要查询的字段

执行成功返回对应的数组,否则返回false

此函数为系统内部函数,用户了解即可





removeTableCollection



  1. mongoBro.prototype.removeTableCollection = function(dbname, tableName, id){}


功能

删除某数据库中的某数据表中某id的记录

dbname: 数据库名

tableName: 数据表名

id: id值

执行成功返回mongoBro, 失败返回false



updateTableCollection



  1. mongoBro.prototype.updateTableCollection = function(dbname, tableName, id, collectionName, value){}


功能

更新数据表中的某条记录

dbname: 数据库名

tableName: 数据表名

id: 主键值

collectionName: 字段名

value: 新的值



updateTCByObject *



  1. mongoBro.prototype.updateTCByObject = function(dbname, tableName, id, obj){}


功能


通过对象方式更新集合

dbname: 数据库名

tableName: 数据表名

id: 主键值

obj: 数组对象

执行成功返回mongoBro, 失败返回false

此函数为系统内部函数,用户了解即可





getObjLength *



  1. mongoBro.prototype.getObjLength = function(o){}


功能


当无法通过obj.length获取对象长度时调用此函数获得长度

o: 对象

此函数为系统内部函数,用户了解即可





insertTableCollection



  1. mongoBro.prototype.insertTableCollection = function(dbname, tableName, data, isAddKey){}


功能

向数据表中新增字段

dbname: 数据库名

tableName: 数据表明

data: 数据

isAddKey: 是否是新增字段

如果isAddkey为假则新增一条记录,否则只是更新字段

执行成功返回mongoBro, 失败返回false



getObjKey *



  1. mongoBro.prototype.getObjKey = function(obj){}


功能


获得对象的键值(即字段名)

obj: 对象

此函数为系统内部函数,用户了解即可





getTableKey *



  1. mongoBro.prototype.getTableKey = function(tableCollection){}


功能


获得数据表数据中的所有键值

tableCollection: 数据表中的数据

此函数为系统内部函数,用户了解即可





addTableKey



  1. mongoBro.prototype.addTableKey = function(dbname, tableName, keyList, valueList){}


功能

向表中增加字段

dbname: 数据库名

tableName: 数据表名

keyList: 键列表

valueList: 值列表

执行成功返回mongoBro,失败返回false



API使用示例






  1. mongoBro.removeAllDatabases();


  2. console.log(mongoBro.createDB('test').getDatabases());


  3. console.log(mongoBro.createDB('fuck').getDatabases());


  4. console.log(mongoBro.updateDB('fuck','bitch').getDatabases());


  5. console.log(mongoBro.getCurrentDBName());


  6. console.log(mongoBro.removeDB('bitch').getDatabases());


  7. console.log(mongoBro.use('test').getCurrentDBName());


  8. console.log(mongoBro.createTable('test','person').getTableCollection('person'));


  9. console.log(mongoBro.getTableList());


  10. console.log(mongoBro.createTable('test','xieyang',

  11. [{

  12. name : 'xieyang',

  13. sex : 'malemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemalemale'

  14. },{

  15. name: 'lanjia',

  16. sex: 'male'

  17. }]).getTableCollection('xieyang'));


  18. var tableInTest = mongoBro.getTableByDBName('test');


  19. console.log(tableInTest);


  20. console.log('输出test数据库中的表数据');


  21. for (var i = 0; i < tableInTest.length; i++) {

  22. console.log(mongoBro.getTableCollection(tableInTest[i]));

  23. };


  24. console.log('向test表中插入数据');


  25. console.log(mongoBro.insertTableCollection('test', 'xieyang', {

  26. name: 'hh',

  27. sex: '233'

  28. }));


  29. console.log('更新test表数据库名为xieyang中主键为1的name字段');


  30. console.log(mongoBro.updateTableCollection('test', 'xieyang', 1, 'name', 'xuqianying').getTableList());


  31. console.log('更新test表数据库名为xieyang中主键为2的name字段');


  32. console.log(mongoBro.updateTableCollection('test', 'xieyang', 2, 'name', 'xieyang').getTableList());


  33. console.log('以对象的方式修改test表中数据库名为xieyang中主键为2的集合');


  34. console.log(mongoBro.updateTCByObject('test', 'xieyang', 1, {

  35. name: '蛤蛤',

  36. sex: 'LGBT'

  37. }));


  38. console.log('修改person表的名称');


  39. console.log(mongoBro.updateTable('test','person','person_edit2').getTableList());


  40. if(remove) {

  41. console.log(mongoBro.removeTable('test','person_edit2').getTableList());

  42. }





输出结果如下:

console



拓展阅读



MongoBro刚问世,功能还在不断完善中,期待您的使用和建议!




1. MongoBro 官网



2. MongoBro GitHub



3. MongoBro 开发者博客