OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

LowDB - 基于Node的纯Json文件数据库


分享到


分类 JS开源   关键字 Node.JS   发布 1518409521  1409063011715
注意 转载须保留原文链接,译文链接,作者译者等信息。  
LowDB 基于Node的纯Json文件数据库

  • 无需服务器
  • 快速
  • 事件触发
  • 来自Lo-Dash的50多种方法

LowDB 基于Lo-Dash 中间件,这使它无需服务器,与其他通常基于 MongoDB API 的数据库相比独特而不寻常。

LowDB支持 JSON Server 和 JSONPlaceholder.

如果你需要浏览器类似的的功能,可以查看Underscore.db


用法


var low = require('lowdb')
low('songs').insert({title: 'low!'})
数据库自动创建并以一种可读的格式保存到db.json。
{
  "songs": [
    {
      "title": "low!",
      "id": "e31aa48c-a9d8-4f79-9fce-ded4c16c3c4c"
    }
  ]
}
查询数据,您可以使用Lo-Dash方法。
var songs = low('songs').where({ title: 'low!' }).value()
 

或着使用LowDB等效短语法。

var songs = low('songs', { title: 'low!' })

也可以监控变化。

low.on('add', function(name, object) {
  console.log(object + 'added to' + name)
})
标准,

查询    x 1000    0.837708 ms
更新 x 1000    4.433322 ms
插入x 1000    11.78481 ms
删除x 1000    24.60179 ms
在你的机器上运行这个标准,复制这个项目并且运行npm install和 npm run install
 

应用程序接口

low(collection)
返回或者创建一个Lo-Dash包裹数组。
然后,您可以使用这些方法: where, find, filter, sortBy, groupBy, ...和来自Underscore.db的方法。

var topFiveSongs = low('songs')
  .where({published: true})
  .sortBy('views')
  .first(5)
  .value();
 
var songTitles = low('songs')
  .pluck('titles')
  .value()
 
var total = low('songs').size()
 
如果你只是想修改数据库,不返回数组或对象, 您可以省略.value().
low.save([path])
保存数据库到path或low.path。默认情况下是db.json。
low.path
数据库的位置。在默认情况下是db.json。

low.path = '/some/path/file.json'


autoSave


设置为false来禁用保存修改,这将LowDB变成只读内存数据库。默认情况下是true。

low.autoSave = true
 

事件

add(collectionName, insertedDoc)
update(collectionName, updatedDoc, previousDoc)
remove(collectionName, removedDoc)
change()

短语法

LowDB短语法只覆盖最常见的操作但允许您编写非常简洁的代码。
low('songs', id)
// == low('songs').get(id).value()
low('songs', {title: 'low!'})
// == low('songs').where({title: 'low!'}).value()
low('songs', {title: 'low!'}, +1)
// == low('songs').insert({title: 'low!'}).value()
low('songs', {title: 'low!'}, -1)
// == low('songs').removeWhere({title: 'low!'}).value()
low('songs', id, -1)
// == low('songs').remove(id).value()
low('songs', id, {title: 'new title'})
// == low('songs').update(id, {title: 'new title'}).value()
low('songs', {published: false}, {published: true})
// == low('songs').updateWhere({published: false}, {published: true}).value()
 

常见问题


数据库是如何保存的?

当你调用insert, update, updateWhere, remove, removeWhere, 数据库只是保存到磁盘。写操作是同步的,但字节流的方式效率很高。

这里有一个例子来说明:

low('posts').insert({ title: 'foo' }) // database is persisted synchronously
low('posts').insert({ title: 'foo' }) // database is not persisted
low('posts').insert({ title: 'foo' }) // database is not persisted
// 100 ms later database will be persisted synchronously
所以在1秒内,LowDB会做最多10个同步写操作。

LowDB的未来版本可能是完全异步的。

它支持并发吗?


是的。Node是单线程的并且更新数据库是同步写的,没有发生并发性问题的风险。

许可证


LowDB是在MIT许可下发布的。
原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. OurJS-免费开源的博客引擎,论坛系统,网站模板和轻量级的CMS
  2. 痛苦的Java程序员
  3. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM
  4. JavaScript中的继承,构造函数以及new关键字的作用
  5. TJ Holowaychuk将Express维护权移交给StrongLoop
  6. 微软Azure云推出基于JSON的NoSQL数据库DocumentDB
  7. Google官方支持的NodeJS访问API,提供后台登录授权
  8. 前置逗号是不好的JavaScript代码书写习惯吗?
  9. 有可能将CSS应用到一个字符的一半吗?
  10. Amazon云增长过快,吓坏股东
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - JS开源
  1. JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM
  2. Google官方支持的NodeJS访问API,提供后台登录授权
  3. 微软开源TypeScript编绎器
  4. 开源的多行字符串工具: 在JS中整段地写HTML
  5. 在nginx中使用lua脚本
  6. Google 的 Web Starter Kit
  7. Mongoose学习参考文档——基础篇
  8. 使用NodeJS搭建邮件自动发送服务器
  9. 翻译:Kendo UI 和 jQuery Mobile的区别
  10. Bearcat pomelo game 实战 -- treasures

 关键字 - Node.JS
  1. 使用Node.JS批量查找替换目录下文本文件中图片地址内容
  2. 判断Node.JS TCP Socket当前连接状态
  3. Node.JS进程间通讯的几种方法:Redis Publish/Subscribe 和 UDP Socket
  4. 是什么让Node.js比Java更快?为什么NodeJS这么快?
  5. Node.JS命令行或批处理中更改Linux用户密码
  6. Node.JS用Path将相对路径转为绝对路径
  7. 使用Node.JS监听文件夹变化
  8. Node.JS循环删除非空文件夹及子目录下的所有文件
  9. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  10. 如何用Bootstrap免费网站模板和OnceAir云盘搭建个人网站服务器

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号