❗ This adapter is very experimental. Use with caution.
❗ Cloudflare Durable Objects are still in Beta
feathers-cf-durable is a database service adapter for Cloudflare Durable Objects, a consistent low-latency storage for Cloudflare Workers. Durable Objects stores data on the edge which makes it useful as a persistent storage without the need of a separate database.
$ npm i feathers-cf-durable
Important:
feathers-cf-durable
implements the Feathers Common database adapter API and querying syntax.
Here is an example of a Feathers application running on Cloudflare Workers with a messages
service persisted on Durable Objects:
$ npm i @feathersjs/feathers@pre feathers-cf-durable feathers-cf-rest itty-router
Important: In this example we will be using the prereleased version of Feathers Dove
In wrangler.toml
[durable_objects]
bindings = [
{ name = "SERVICE", class_name = "Service" }
]
In index.mjs
:
import { Router } from 'itty-router'
export { DurableObject as Service } from 'feathers-cf-durable'
import app from './feathers.mjs'
const router = Router()
router.all('*', app.handle)
router.all('*', (request, env) => {
return new Response('Not found', { status: 404 })
})
export default {
fetch: router.handle,
}
In feathers.mjs
:
import feathers from '@feathersjs/feathers'
import rest from 'feathers-cf-rest'
import { Adapter } from 'feathers-cf-durable'
const app = feathers()
app.configure(rest)
app.use('messages', new Adapter())
export default app
To test your app in development, I recommend using Miniflare since Wrangler CLI does not yet support Durable Objects.
$ miniflare --watch --debug
You should now be able to navigate to http://localhost:8787/messages to see the messages list.
To create a new message, simply make a HTTP POST request to http://localhost:8787/messages
You can publish your app to Cloudflare Workers. If this is the first time publishing your app, don't forget to instantiate the DO with the --new-class
argument
$ wrangler publish --new-class Service
Copyright (c) 2021
Licensed under the MIT license.