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.





전제 조건:
  • DigitalOcean Account-$100 Free on signup
  • Install doctl cli
  • MongoDB 자격 증명(URI)

  • 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 파일에서 응답을 받게 됩니다.

    당신이 기사를 즐겼기를 바랍니다. 모든 질문은 의견에 자유롭게 문의하십시오.

    좋은 웹페이지 즐겨찾기