➤ projectdiscovery➤ Remix➤ Rescript➤ Purescript➤ npm➤ Cloudflare➤ React➤ Next.js➤ GO➤ Hyper-V➤ Tibero➤ Git➤ Algorithms, 2020년
Cloudflare Workers에 Fauna 사용하기
January 21, 2022Create a serverless, globally distributed REST API with Fauna 따라해보기
Fauna 세팅
- Fauna 가입
- CREATE DATABASE 버튼을 누르고, 새로운 데이터베이스 생성
- NEW COLLECTION 버튼을 누르고, 새로운 컬렉션 생성
- Security 탭에서 NEW KEY 버튼을 누르고, 새로운 키 생성
- role : server
- 키 보관하기
Cloudflare Workers 세팅
secret
을 저장하려면 publish를 먼저 해야함
wrangler generate guestbook-fauna-workers
cd fauna-workers
wrangler publish
secret
환경 변수로 추가
wrangler secret put FAUNA_SECRET
코드 작성
Fauna Js 드라이버 설치
npm install faunadb
Worktop 설치
worktop : The next generation web framework for Cloudflare Workers
npm install --save worktop
build 스크립트 추가
package.json
"scripts": {
"build": "worktop build index.js",
// ...
}
wrangler.toml
파일 수정
wrangler.toml
[build]
command = "npm run build"
[build.upload]
format = "service-worker"
유틸리티 함수
utils.js
export function getFaunaError(error) {
const { code, description } = error.requestResult.responseContent.errors[0];
let status;
switch (code) {
case 'unauthorized':
case 'authentication failed':
status = 401;
break;
case 'permission denied':
status = 403;
break;
case 'instance not found':
status = 404;
break;
case 'instance not unique':
case 'contended transaction':
status = 409;
break;
default:
status = 500;
}
return { code, description, status };
}
index.js
수정
import {Router, listen} from 'worktop';
import faunadb from 'faunadb';
import {getFaunaError} from './utils.js';
const router = new Router();
const faunaClient = new faunadb.Client({
secret: FAUNA_SECRET,
});
const {Create, Collection, Match, Index, Get, Ref, Paginate, Sum, Delete, Add, Select, Let, Var, Update} = faunadb.query;
router.add('GET', '/', async (request, response) => {
response.send(200, 'hello world');
});
listen(router.run);
실행하면 Error: The package "esbuild-darwin-64" could not be found, and is needed by esbuild.
에러나서 이슈 달아두고 진행 못하는 중