NodeJS REST API 모델 및 서비스 구조

아 비지트 파트로

저는 Express와 MariaDB / Cassandra를 백엔드로 사용하여 중간 규모의 애플리케이션을 작성하고 있습니다.

모델 서비스 컨트롤러 패턴 을 따르려고합니다 . 초기 디자인에는 얇은 컨트롤러와 팻 모델이 있었지만 모델에 많은 코드가 포함되어 있고 아마도 별도의 파일로 분할해야 할 필요가 있다고 느꼈습니다. 이제 컨트롤러와 모델 사이에 서비스 계층이 있습니다.

컨트롤러 / API 방법과 서비스 방법 간의 1-1 매핑을 달성하려고합니다.

각 단일 서비스 메서드는 해당 API 메서드에서 수행 할 모든 작업에 대한 코드를 포함하려고합니다. 내 유효성 검사 논리는 서비스에 있습니다. 이 서비스는 asyncnodejs 모듈을 사용하여 내부적으로 여러 모델을 호출 하고 다른 모델에 대한 응답을 처리하고 전달할 수 있습니다. 그러나 이것은 문제가되고있다.

각 사용자가 조직에 속한 사용자를 등록한다고 상상해보십시오. -

  1. 사용자가 이미 존재하는지 확인합니다.
  2. 그렇지 않은 경우 사용자를위한 조직을 만듭니다.
  3. 조직 ID를 얻습니다.
  4. 사용자 테이블에 조직 ID를 매핑하여 사용자를 만듭니다.

이 모든 것은 트랜잭션 내에서 수행됩니다.

서비스에 유효성 검사를하면 조직 삽입을위한 컨트롤러 / API가 없더라도 여기에서 유효성 검사를 수행 할 수 있도록 조직 삽입을위한 서비스가 있어야합니다. 그러면 서비스와 컨트롤러 / API 간의 1-1 매핑이 깨집니다.

모델에 유효성 검사를 넣는 또 다른 문제는 조직이나 사용자가 삽입되기 직전에 수행된다는 것입니다. 이제 조직 데이터가 정확하지만 사용자 데이터가 올바르지 않으면 조직이 실제로 삽입되지만 롤백해야합니다.

이것을 처리하는 더 좋은 방법이 있습니까? 서비스에서 처음에 사용자 및 조직에 대한 유효성 검사를 수행 한 다음 모델 내에서 다시 수행해야합니까? 아니면이를 처리하는 더 좋은 방법이 있습니까? 나는 과감한 변화를 수행 할 수 있습니다.

사이버 웜뱃

불행히도이를 처리 할 수있는 좋은 방법은 없습니다. MariaDB / Cassandra 사용에 익숙하지 않지만 Express / Mongooose / MongoDB를 사용하여이 작업을 수행했습니다. 문제는 때때로 데이터베이스와 관련이없는 유효성 검사를 수행해야한다는 것입니다 (예 : 연락처 양식, 기타 데이터베이스가 아닌 작업). 다른 경우에는 고유 한 필드 검사와 같은 항목에 대한 데이터베이스 기본 유효성 검사가 필요합니다. Mongoose의 경우 고유성을 확인하기 위해 서비스 기반 유효성 검사기를 만들려는 시도가 있었지만 (Mongoose 작성자에 따라) 아마도 경쟁 조건으로 인해 100 % 작동하지 않는 결과를 낳았습니다.

내가 접근 한 방법은 프런트 엔드 / 경로 유효성 검사 서비스 / 미들웨어를 만들어 필수 매개 변수 등을 확인하는 것이 었습니다.이 중 일부는 db에서 처리 할 수 ​​있지만 문의 양식 사례에서와 같이 일부는 서비스. 이러한 오류 메시지를 처리하기 위해 여러 가지 방법 (리소스를 찾을 수 없음, 프런트 엔드 유효성 검사 등)으로 Error 개체를 확장했습니다.

그런 다음 모든 오류 (프런트 엔드 서비스, Mongo, Mongoose)가 버블 링되고 .NET을 사용하여 컨트롤러에 전달되는지 확인합니다 next(err). 모든 오류는 다른 오류 모델을 통합 형식으로 변환 한 다음 json으로 출력하는 오류 미들웨어로 유입됩니다. 최종 결과는 매우 깨끗한 설정을 유지하면서 오류가 처리되는 위치에 대한 많은 유연성입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

NodeJS REST API 모델 및 서비스 구조

분류에서Dev

데이터베이스 모델링, 구조 및 관계

분류에서Dev

typescript 및 nodejs에서 모델의 모든 속성에서 루프

분류에서Dev

REST API를 만드는 NodeJS 및 Java

분류에서Dev

웹 API .NET에서 뷰 모델 참조

분류에서Dev

구조화 된 데이터가있는 REST API 및 GET

분류에서Dev

Django 및 API REST가있는 잘못된 PDF 구조

분류에서Dev

Rails에서 네임 스페이스 및 관련 모델 구성

분류에서Dev

CanJs 모델 서비스 방법 구현

분류에서Dev

reactx 및 REST 웹 서비스

분류에서Dev

REST API 및 Angular와 같은 자바 스크립트 프런트 엔드를 사용한 모델 유효성 검사 모범 사례

분류에서Dev

REST API 및 Angular와 같은 자바 스크립트 프런트 엔드를 사용한 모델 유효성 검사 모범 사례

분류에서Dev

관련 모델의 ForeignKey에서 Django REST API 반환 필드

분류에서Dev

REST Spring 서비스 및 JQUERY 웹 통합 모범 사례

분류에서Dev

질문 : 커스텀 비전 및 Python API로 모델 다운로드

분류에서Dev

REST API에서 PUT 및 DELETE

분류에서Dev

REST API에서 PUT 및 DELETE

분류에서Dev

마이크로 서비스 이벤트 버스 및 REST API 빌드 (python / flask)

분류에서Dev

Liferay REST 웹 서비스 API

분류에서Dev

NetLogo 모델 : 모델 내에서 방향 및 거리 전달에 대한 조언

분류에서Dev

laravel 모델, 클래스 이름, 테이블 이름 및 디렉터리 구조 모범 사례

분류에서Dev

REST API URL 구조 제안

분류에서Dev

Azure 모바일 서비스 REST API를 사용하는 방법?

분류에서Dev

서비스 / API에 대한 능동 및 수동 모니터링을위한 최상의 도구 / 관행

분류에서Dev

NodeJS 서버를 사용한 백본 모델 및 컬렉션 URL 디자인

분류에서Dev

II 레벨 구조 모델에서 중첩 모델 생성

분류에서Dev

비디오 모델 및 ndb

분류에서Dev

REST API 및 API 키

분류에서Dev

ActiveRecord에서 질문 및 답변 데이터 구조를 모델링하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    NodeJS REST API 모델 및 서비스 구조

  2. 2

    데이터베이스 모델링, 구조 및 관계

  3. 3

    typescript 및 nodejs에서 모델의 모든 속성에서 루프

  4. 4

    REST API를 만드는 NodeJS 및 Java

  5. 5

    웹 API .NET에서 뷰 모델 참조

  6. 6

    구조화 된 데이터가있는 REST API 및 GET

  7. 7

    Django 및 API REST가있는 잘못된 PDF 구조

  8. 8

    Rails에서 네임 스페이스 및 관련 모델 구성

  9. 9

    CanJs 모델 서비스 방법 구현

  10. 10

    reactx 및 REST 웹 서비스

  11. 11

    REST API 및 Angular와 같은 자바 스크립트 프런트 엔드를 사용한 모델 유효성 검사 모범 사례

  12. 12

    REST API 및 Angular와 같은 자바 스크립트 프런트 엔드를 사용한 모델 유효성 검사 모범 사례

  13. 13

    관련 모델의 ForeignKey에서 Django REST API 반환 필드

  14. 14

    REST Spring 서비스 및 JQUERY 웹 통합 모범 사례

  15. 15

    질문 : 커스텀 비전 및 Python API로 모델 다운로드

  16. 16

    REST API에서 PUT 및 DELETE

  17. 17

    REST API에서 PUT 및 DELETE

  18. 18

    마이크로 서비스 이벤트 버스 및 REST API 빌드 (python / flask)

  19. 19

    Liferay REST 웹 서비스 API

  20. 20

    NetLogo 모델 : 모델 내에서 방향 및 거리 전달에 대한 조언

  21. 21

    laravel 모델, 클래스 이름, 테이블 이름 및 디렉터리 구조 모범 사례

  22. 22

    REST API URL 구조 제안

  23. 23

    Azure 모바일 서비스 REST API를 사용하는 방법?

  24. 24

    서비스 / API에 대한 능동 및 수동 모니터링을위한 최상의 도구 / 관행

  25. 25

    NodeJS 서버를 사용한 백본 모델 및 컬렉션 URL 디자인

  26. 26

    II 레벨 구조 모델에서 중첩 모델 생성

  27. 27

    비디오 모델 및 ndb

  28. 28

    REST API 및 API 키

  29. 29

    ActiveRecord에서 질문 및 답변 데이터 구조를 모델링하는 방법은 무엇입니까?

뜨겁다태그

보관