netlify 기능이 있는 동물군

5000 단어
동물군을 개발하려면 FQL(Fauna Query Language)을 사용하여 데이터베이스와 상호 작용할 수 있는 sdk 라이브러리가 필요합니다. 이것은 기본적으로 Fauna용 SQL입니다. 탐색하고 다시 돌아와서 이 게시물을 편집할 수 있는 graphQL 사용 옵션이 있습니다. encoding 패키지는 netlify에서 사용되며 설치되지 않은 경우 작성 시 오류가 발생합니다. 피어 종속성일 수 있으며 향후 버전에서 수정될 수 있지만 현재로서는 이것이 내가 작동하는 것으로 확인된 해결 방법입니다.

npm init -y
npm install faunadb encoding



이제 우리는 동물군 DB에 연결할 수 있기를 원하므로 사용해야 하는 키가 있습니다. NEW KEY를 사용하여 보안 탭의 Fauna Console에 생성합니다.



중요한 것은 주어진 비밀을 저장하는 것입니다. 이것은 DB에 대한 연결이 될 것이며 저는 이것을 .env 파일에 저장하고 이것이 .gitignore에 있는지 확인하여 키가 내 저장소에 업로드되지 않도록 합니다. 이것은 Netlify에서 사용되므로 Netlify에서도 키를 생성해야 합니다. 저는 실제로 이 작은 기능을 사용하여 로컬 개발용 테스트 DB와 프로덕션 DB를 설정하고 각각에 대한 키를 생성하고 저장했습니다.



테스트 db를 갖는 것에 대한 멋진 점은 히스토리 및 TTL 설정으로 자체 정리하도록 컬렉션을 설정할 수 있다는 것입니다. 나는 이것을 1로 설정했고 이론적으로 테스트 데이터를 깨끗하게 유지해야 합니다. 명심해야 할 한 가지는 무료 계정에는 제한이 있으므로 무거운 테스트를 수행할 때 확인해야 할 사항이 될 수 있다는 것입니다. 그러나 다시 DB를 생성하고 이와 같은 API에 대해 개발하는 개인 계정을 가질 수 있습니다.



이것이 내가 로컬 환경을 설정하는 방법입니다.

touch .env

## Add the following to the .env file
FAUNADB_SECRET=fnADldk43FDdfdsffxlw08N2dh73d



My.gitignore에는 빌드 디렉토리가 저장소에 저장되지 않도록 다음이 추가되었습니다. 즉석에서 빌드되므로 git repo에 있을 필요가 없습니다.

# Netlify Functions
/dist
/functions



개발 중인 netlify는 기능을 로컬에서 테스트하고 실행할 수 있는 멋진 방법을 제공했습니다. 더 많은 기능을 제공하는 Netlify Dev도 있지만 기본 기능 테스트에는 이 경량 패키지가 필요합니다.

npm install -D netlify-lambda 



Netlify에서 기능을 사용하려면 웹 인터페이스를 통해 이 작업을 수행할 수 있지만 콘솔을 열지 않고도 무엇이 사용되고 있는지 정확히 알 수 있도록 저장소의 파일에 저장하는 것을 선호합니다. 기본 구성이 포함된 netlify.toml 파일이 필요합니다.

[build]
  # This will be your default build command.
  command = "npm run build"
  # This is where Netlify will look for your lambda functions.
  functions = "functions"
  # This is the directory that you are publishing from.
  publish = "dist"



파일 설정에서 package.json 파일에 다음을 설정합니다. build 명령은 Netlify가 사용할 명령이고 functions 명령은 기능을 개발하고 내 콘솔에서 출력을 보기 위해 로컬에서 사용하는 명령입니다.

"scripts": {
    "build": "netlify-lambda build src/functions",
    "functions": "netlify-lambda serve src/functions"
  },



첫 번째 함수를 만들 시간

mkdir -p src/functions
touch src/functions/test-connection.js



Fauna에서 test_connections라는 컬렉션을 만듭니다.



그리고 기본적인 테스트를 위한 문서를 추가할 수 있습니다.



함수 자체는 이전에 생성한 비밀을 사용하여 DB에 연결하고 이 문서를 가져옵니다.

require('dotenv').config();
import faunadb from 'faunadb';

const q = faunadb.query;
const client = new faunadb.Client({
  secret: process.env.FAUNADB_SECRET,
});

exports.handler = (event, context, callback) => {
  console.log(`${event.httpMethod}: ${event.path}`);
  return client
    .query(q.Paginate(q.Match(q.Ref('classes/test_connections'))))
    .then((response) => {
      const references = response.data;
      console.log('references', references);
      const getAllDataQuery = references.map((ref) => {
        console.log(ref);
        return q.Get(ref);
      });
      // then query the refs
      return client.query(getAllDataQuery).then((ret) => {
        return callback(null, {
          statusCode: 200,
          body: JSON.stringify(ret),
        });
      });
    })
    .catch((error) => {
      console.log('error', error);
      return callback(null, {
        statusCode: 400,
        body: JSON.stringify(error),
      });
    });
};



이제 npm run functions로 함수를 실행하고 http://localhost:9000/.netlify/functions/test-connection로 이동하여 결과를 볼 수 있습니다. 저는 이러한 유형의 테스트에 Postman을 사용하는 것을 선호하지만 curl을 사용할 수도 있습니다.

좋은 웹페이지 즐겨찾기