DigitalOcean 기능이 있는 서버리스 Node-Mongo API
새로 출시된 DigitalOcean Functions - 서버리스로 전환하는 방법에 대해 논의하고 데이터를 MongoDB에 연결하고 저장할 수 있는 node.js 애플리케이션을 만들 것입니다. DigitalOcean으로 서버리스 기능을 만드는 것은 매우 간단합니다.
Functions are blocks of code that run on demand without the need to manage any infrastructure. Develop on your local machine, test your code from the command line (using doctl), then deploy to App Platform — no servers required.
전제 조건:
1단계: 초기화
일단 시스템에 doctl을 설정하고 설치합니다. 다음 명령을 실행하여 모든 것이 작동하는지 확인하십시오.
doctl serverless status
위의 명령은 다음과 같은 결과를 반환해야 합니다.
Connected to function namespace 'fn-feb132ee-706a-4f13-9c81-f24a3330260a' on API host 'https://faas-nyc1-78edc.doserverless.co'
이제 다음을 실행하여 프로젝트를 초기화합니다(여기서 node-mongo-serverless는 프로젝트 이름이며 원하는 이름을 선택할 수 있습니다).
doctl serverless init --language js node-mongo-serverless
프로젝트 폴더는 다음 디렉토리 구조로 생성됩니다.
node-mongo-serverless/
├── packages
│ └── sample
│ └── hello
│ └── hello.js
└── project.yml
이제 파일 이름을 바꾸고 새 구조가 다음과 같이 보이도록 루트 디렉토리에 .env 파일을 만듭니다.
node-mongo-serverless/
├── packages
│ └── mongodb
│ └── postData
│ └── index.js
└── project.yml
└── .env
2단계: 구성
이제 그에 따라
project.yml
파일을 수정해야 합니다. 다음과 같을 것입니다. 패키지 이름과 작업 이름을 수정해야 합니다.targetNamespace: ''
parameters: {}
packages:
- name: mongodb
parameters: {}
annotations: {}
actions:
- name: postData
binary: false
main: ''
runtime: 'nodejs:default'
web: true
parameters: {}
environment: {}
annotations: {}
limits: {}
environment:
DATABASE_URL: ${MONGO_URI}
이제 MongoDB URI를 사용하여 루트 폴더에서 .env 파일을 열고 수정합니다.
.env 파일은 다음과 같이 표시됩니다. (값을 자신의 MongoDB URI로 바꿉니다.)
MONGO_URI='mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin'
이제 다음 명령을 하나씩 실행합니다.
cd node-mongo-serverless/packages/mongodb/postData
npm init -y
npm install --package-lock-only mongodb
위의 명령은
packages.json
디렉토리에 node-mongo-serverless/packages/mongodb/postData
파일을 생성하고 mongodb 패키지를 추가합니다.3단계: 함수에 코드 추가
이제 이미 가지고 있는 index.js 파일에 기본 기능을 만들 수 있습니다.
먼저 index.js 파일의 모든 내용을 제거하고 다음 코드로 바꿉니다.
const MongoClient = require('mongodb').MongoClient;
async function main() {
const uri = process.env['DATABASE_URL'];
let client = new MongoClient(uri);
let data = { "name":"Arpan" };
try {
await client.connect();
await client.db("namedb").collection("names").insertOne(data);
console.log(`added ${data} to database.`);
return { ok: true };
} catch (e) {
console.error(e);
return {
"body": { "error": "There was a problem adding the data to the database." },
"statusCode": 400
};
} finally {
await client.close();
}
}
module.exports.main = main;
이 함수는 MongoDB 데이터베이스에 데이터를 추가합니다.
그게 다야. 이제 모두 끝났습니다. 이제 함수 배포를 진행할 수 있습니다.
4단계: 함수 배포 및 테스트
project.yml이 있는 프로젝트의 루트 디렉터리로 이동하고 다음 명령을 실행하여 Serverless 네임스페이스에 연결합니다.
doctl serverless connect
"함수 네임스페이스에 연결됨"과 같은 긍정적인 응답을 받으면 다음 명령을 실행하여 함수를 배포할 수 있습니다.
doctl serverless deploy .
위 명령의 경우 프로젝트의 루트 디렉터리에 있어야 합니다. 배포에 대한 성공 메시지가 표시되어야 합니다.
다음 명령을 실행하여 데이터를 저장하기 위해 누를 수 있는 함수 API의 URL을 가져옵니다.
doctl serverless functions get mongodb/postData --url
반환된 URL을 복사하여 로컬 브라우저나 우편 배달부 또는 기타 도구/패키지에 붙여넣을 수 있습니다. 데이터가 MongoDB에 제대로 삽입되면 index.js 파일에서 응답을 받게 됩니다.
당신이 기사를 즐겼기를 바랍니다. 모든 질문은 의견에 자유롭게 문의하십시오.
Reference
이 문제에 관하여(DigitalOcean 기능이 있는 서버리스 Node-Mongo API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arpan45/serverless-node-mongo-api-with-digitalocean-functions-5a3i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)