netlify 기능이 있는 동물군
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을 사용할 수도 있습니다.
Reference
이 문제에 관하여(netlify 기능이 있는 동물군), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iarehilton/fauna-with-netlify-functions-k0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)