メモ。 参考にした動画:A Simple REST API with Express, RethinkDB, and Thinky
下準備
セットアップ
thinkyをrequireする時に、セットアップ情報をオブジェクトで渡して実行する。
const thinky = require('thinky')({ host: 'localhost', port: 28015, db: 'People' })
RethinkDBドライバへの参照
thinkyにはrethinkDBへの参照が紐付いているので、変数格納しておく。
const r = thinky.r
モデルの作成
thinky.createModel(‘TableName’, {schema})
const People = thinky.createModel('People', { firstName: String, lastName: String, coolnessFactor: Number, date: { _type: Date, default: r.now() } })
インデックス作成
dateカラムがインデックスに適しているかどうかはさておき…
People.ensureIndex('date')
REST API
get
const get = function (req, res) { People.get(req.params.id).run().then((person) => { res.json(person) }).error((err) => { res.json({ message: err }) }) }
getAll
const getAll = function (req, res) { People.orderBy({ index: r.desc('date') }).run().then((people) => { res.json(people) }).error((err) => { res.json({ message: err }) }) }
add
const add = function (req, res) { var person = new People(req.body) person.save().then((result) => { res.json(result) }).error((err) => { res.json({ message: err }) }) }
delete
const delete = function (req, res) { People.get(req.params.id).run().then((person) => { person.delete().then((result) => { res.json(result) }).error((err) => { res.json({ message: err }) }) }).error((err) => { res.json({ message: err }) }) }
update
const update = function (req, res) { People.get(req.params.id).run().then((person) => { if(req.body.firstName) { person.firstName = req.body.firstName } if(req.body.lastName) { person.lastName = req.body.lastName } if(req.body.coolnessFactor) { person.coolnessFactor = parseInt(req.body.coolnessFactor) } person.data = r.now() person.save().then((result) => { res.json(result) }).error((err) => { res.json({ message: err}) }) }) }
あとは、expressなりなんなりでrouteしてあげれば動きます。