Lowdb - 用一個json檔案來當資料庫吧
Lowdb是一個小型的資料庫,把所有的資料都存在一個json檔裡,非常的輕巧,但比較適合小型專案
我們這次練習就使用Lowdb來實作http的CRUD吧!
參考資料
先用npm 安裝套件
npm install lowdb --save
npm install uuid --save
在js檔最前面引用這些套件
var low = require('lowdb');
var uuid = require('uuid'); //自動產生id的套件
var db = low('db.json');
如果你的db.json檔是空的,則預設塞入users: []這筆資料
db.defaults({ users: [] })
.write();
GET 取得使用者資料
取得所有使用者資料
db.get('users').value();
依據offset=2,limit=3,依照age排序由小到大的條件 取得使用者資料
db.get('users').slice(2).take(3).orderBy('age','asc').value();
根據 id 取得使用者資料
db.get('users')
.find({ id: "d477193a-9546-42d2-bd38-342077b39f50" })
.value();
POST 新增使用者資料
db.get('users')
.push({ name: "Allen", age : 18 })
.last()
.assign({ id: uuid() })
.write();
PUT 更新使用者資料
db.get('users')
.find({ id: "d477193a-9546-42d2-bd38-342077b39f50" })
.assign({ name: "John" , age:19 })
.write();
DELETE 刪除使用者資料
db.get('users')
.remove({ id: "298208ab-c1e5-4ef3-a202-fcd3fc05ea06" })
.write();
結合 Express 的 Restful API 與 Lowdb
結合後的程式碼如下,請繼續完成POST, PUT, DELETE的部分
app.get('/users', function (req, res) {
var limit = req.query.limit;
var offset = req.query.offset;
var users = db.get('users');
if (offset) { users = users.slice(offset) }
if (limit) { users = users.take(limit) }
res.send(users.value());
});
app.get('/users/:id', function (req, res) {
var user =
db.get('users')
.find({ id: req.params.id })
.value();
res.send(user);
});