노드에서 MongoDB REST API를 생성하는 방법js 및 AWS Lambda

서버 없는 과정 소개 3과


오늘은 Node에서 MongoDB REST API를 만드는 방법을 학습합니다.js.
서버 없는 과정 몇 회 전에 AWS Lambda 서버 없는 프로젝트를 설정하는 방법을 배웠습니다. 
URL은 다음과 같습니다.
https://www.blog.duomly.com/lesson-1-serverless-how-to-get-started-tutorial/
제2과에서는 Node를 사용하여 AWS Lambda 서버 인증이 없는 것을 만드는 방법을 배웠습니다.js 및 MongoDB, URL 여기:
https://www.blog.duomly.com/lesson-2-serverless-authentication/
나는 우리가 구축하고자 하는 것에 대해 매우 흥분한다. 왜냐하면 우리는 오늘의 과정에서 계속 전진하고 더 많은 기능을 개발할 것이다.
SaaS 응용 프로그램의 가장 중요한 부분 중 하나는 주문입니다. 이것이 바로 우리가 오늘 해야 할 일입니다.
우리는 주문서를 만드는 방법, 주문서를 업데이트하는 방법, 서버 없는 프레임워크에서 API 단점을 처리하는 방법, 그리고 그것을 보호하는 방법을 배울 것이다.
우리 시작합시다!
만약 당신이 동영상을 좋아한다면, 여기는 유튜브 버전입니다.

signJWT를 module로 변경합니다.출구.AuthenticationHelpers의 signJWT회사 명


지난 시간에 그것을 바꾸는 것을 잊어버렸기 때문에, 지금 우리는 Authentication Helpers에 들어가야 한다."this"를 "module.exports"로 변경합니다.
전체 함수 "verify Password"가 어떤 모양인지 보여 줍니다.
module.exports.verifyPassword = (sentPassword, realPassword, userId) => {
  return bcrypt.compare(sentPassword, realPassword)
    .then(valid => !valid ? Promise.reject(new Error('Incorrect password or username')) : module.exports.signJWT(userId)
  );
}

사용자에게 createdAt 를 추가합니다.js 및 레지스터 기능


모든 데이터를 투명하게 하기 위해서, 우리는 사용자가 언제 만들었는지 알아야 한다.
사용자 모델에 "createdat"필드를 추가해야 합니다.js 파일.
const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({  
  name: String,
  email: String,
  password: String,
  premium: Boolean,
  premiumEnds: Date,
  createdAt: Date,
});
mongoose.model('User', UserSchema);

module.exports = mongoose.model('User');
이제 AuthenticationHandler에 들어가야 합니다.js 파일,register 함수에 들어가서 이 필드를 추가합니다.
function register(body) {
  return validRegistration(body)
    .then(() => User.findOne({ email: body.email }))
    .then(exists => exists ? Promise.reject(new Error('User exists')) : bcrypt.hash(body.password, 8))
    .then(hashedPass => User.create({ name: body.name, email: body.email, password: hashedPass, premium: false, createdAt: new Date()}))
    .then(user => ({ auth: true, token: signJWT(user._id) })); 
}

MongoDB 모델 생성 방법


자, 이제 우리는 새로운 기능을 개발하기 시작할 수 있습니다.
우리가 해야 할 첫 번째 단계는 주문서를 만드는 것이다."order"라는 디렉터리의 js 파일입니다.
다음은 주문을 위해 MongoDB 모델을 만들어야 합니다.
const mongoose = require('mongoose');

const OrderSchema = new mongoose.Schema({  
  userId: String,
  status: String,
  amount: Number,
  createdAt: Date,
});
mongoose.model('Order', OrderSchema);

module.exports = mongoose.model('Order');

createOrder 프로세서를 serverless에 추가합니다.yml 회사


다음 단계에서 우리는 서버가 없는 곳으로 들어가야 한다.yml 및 첫 번째 AWS Lambda 함수를 정의합니다.
"createOrder"라는 AWS Lambda 함수를 정의하고 "order/OrderHandler.create"를 프로세서로 전달합니다.
다음은'jwt 검증'권한 수여기를 사용하여 이 기능을 보호합니다.
createOrder:
  handler: order/OrderHandler.create
  events:
    - http:
        path: order/create
        method: post
        cors: true
        authorizer: verify-jwt

yOrder를 serverless에 추가합니다.yml 회사


우리는 서버리스에 물건을 하나 더 추가해야 한다.yml 파일.
문제는 "myOrders"함수입니다. 프로세서의 이름은 "myOrders"입니다.
JWT는 여전히 그곳의 검증자이다.
어쨌든 단점의 경로를 바꾸는 것을 기억하십시오.
myOrders:
  handler: order/OrderHandler.myOrders
  events:
    - http:
        path: order/my
        method: get
        cors: true
        authorizer: verify-jwt

orderHandler 만들기


너무 좋아요.현재, 우리는 노드 처리에 사용할 처리 프로그램에 들어갈 수 있다.js 논리는 AWS Lambda 함수와 우리의 API 노드에 의해 실현됩니다.
첫 번째 단계로, "order"디렉터리에 "OrderHandler.js"파일을 만들어야 합니다.
파일을 만든 후에 데이터베이스,order,success,errResponse 함수를 가져와야 합니다.
다음 예제를 참조하십시오.
const db = require('../database');
const Order = require('./Order');
const { success, errResponse } = require('../authentication/AuthenticationHelpers');

생성할 프로세서와 함수 만들기


다음 단계에서, 우리는 주문 노드를 만드는 것을 처리한다.
우리는 함수 처리 프로그램을 만들어서 이 점을 실현할 수 있으며, 노드로서 이 점을 실현하는 것이 매우 중요하다.js가 내보내졌습니다.모듈, 따라서 서버less는 이 기능을 가져와 AWS Lambda 함수에 밀어넣을 수 있습니다.
module.exports.create = (r, cb) => {
  cb.callbackWaitsForEmptyEventLoop = false;
  return db()
    .then(() => create(JSON.parse(r.body), r.requestContext.authorizer.principalId))
    .then(res => success(res))
    .catch(err => errResponse(err));
};
다음은 MongoDB 데이터베이스에서 생성 순서를 담당하는 논리를 포함하는 함수를 만들어야 합니다.
function create(body, id) {
  return Order.create({userId: id, status: 'pending', amount: body.amount, createdAt: new Date()});
}

업데이트를 위한 프로세서와 함수 만들기


이 단계에서, 우리는'업데이트'기능을 위해 내보낼 모듈을 만들어야 한다.
우리는 그것을 AWS Lambda 함수와 단점으로 추가하지 않습니다. 왜냐하면 우리는 그것을 공개하고 싶지 않기 때문입니다.
우리의 응용 프로그램만이 이 논리를 호출할 수 있고, 예를 들어 지불이 성공적으로 실행된 후에만 조건을 전달할 수 있다.
우리 이 노드를 좀 봅시다.우리가 만들어야 할 js 모듈:
module.exports.update = (r, cb) => {
  cb.callbackWaitsForEmptyEventLoop = false;
  return db()
    .then(() => update(JSON.parse(r.body)))
    .then(res => success(res))
    .catch(err => errResponse(err));
};
"update"모듈 논리를 포함하는 함수를 만들어야 합니다.
function update(body) {
  return Order.findByIdAndUpdate(body.id, body, { new: true })
}

myorder를 위한 프로세서와 함수 만들기


네, 서버 노드가 거의 없습니다.JS REST API.
우리가 만들어야 할 마지막 논리는 나의 주문과 관련된 논리이다.
이 논리는 사용자 id 필드와 JWT 영패에서 인코딩된 사용자 id 필드와 같은 주문서를 찾아서 우리의 주문서를 검색합니다.
이를 위해서는 두 가지 부분이 필요하다.첫 번째는 내보내기 모듈입니다.
module.exports.myOrders = (r, cb) => {
  cb.callbackWaitsForEmptyEventLoop = false;
  return db()
    .then(() => myOrders(r.requestContext.authorizer.principalId))
    .then(res => success(res))
    .catch(err => errResponse(err));
};
두 번째 섹션은 DB 관련 논리입니다.
function myOrders(id) {
  return Order.find({userId: id})
    .then(orders => !orders.length ? Promise.reject('Orders not found.') : orders)
    .catch(err => Promise.reject(new Error(err)));
}

노드에서 MongoDB REST API를 테스트하는 방법회사 명


우후!다음 SaaS 응용 프로그램 기능을 만들었습니다. 주문이 준비되었습니다!
이제 우리는 테스트 단계에 들어갈 수 있다.
우리의 서버 없는 응용 프로그램을 테스트하는 데는 두 가지 방법이 있다.
첫 번째는 AWS 인프라에 애플리케이션을 배치하고 실시간 API를 테스트하는 것입니다. 이것은 당신에게 좋은 경험입니다.
모든 응용 프로그램을 AWS 클라우드에 배치하려면 AWS CLI를 설정해야 합니다. 이것은 전체 AWS 인프라를 만들 것입니다. 따라서 설정, 지역 등을 꼼꼼히 확인하십시오.
이렇게 하려면 터미널을 열고 다음을 입력하십시오.sls deploy그리고 두 번째 내가 좋아하는 방법은 로컬에서 응용 프로그램을 시작할 수 있기 때문에 나의 개발 시간을 증가시켰다.
이것은 아주 좋습니다. 특히 디버깅 프로그램을 계획할 때, 컨트롤러를 설치할 수 있기 때문입니다.일부 노드를 터치할 때 메시지를 표시하는 로그입니다.
데이터가 어떻게 우리의 응용 프로그램에 들어가는지, 또는 데이터가 어떻게 출력되는지 알고 싶을 때, 그것은 매우 편리하다.
로컬에서 프로그램을 시작하는 방법은 이전 과정에서 이 코드를 사용하는 방법을 알려 주었습니다.

노드에서 MongoDB REST API를 생성하는 방법을 요약합니다.회사 명


축하이제 AWS Lambda SaaS 어플리케이션이 더욱 향상되어 보입니다!
주문서를 만드는 방법, MongoDB 모델을 만드는 방법, MongoDB와 Node의 프로젝트를 업데이트하는 방법을 배웠습니다.js, 그리고 노드에서 AWS Lambda 함수를 만드는 방법.js.
나는 당신들이 한 모든 것을 자랑스럽게 생각합니다. 당신들이 오늘의 수업에서 많은 가치를 얻을 수 있기를 바랍니다.
새로운 수업에 대한 알림을 받기 위해 저희 채널을 구독하세요!
코드가 올바른지 확인하려면 다음 URL이 오늘의 강좌입니다.
https://github.com/Duomly/aws-serverlesss-nodejs/tree/serverless-course-lesson-3

읽어주셔서 감사합니다.
Duomly의 Radek.

좋은 웹페이지 즐겨찾기