분류

Node.js 및 Angular.js를 사용하여 Touchbase를 통한 Couchbase 및 N1QL 살펴보기 - 1부: 1부: 사용자 문서 만들기

1부: 1부: 사용자 등록하기

필요한 자료

  • Node.js
  • Express.js

사용된 노드 모듈

  • 카우치베이스 Node.js SDK/N1QL
  • 본문 파서
  • uuid
  • 노드 포지

소셜 네트워크 구축의 가장 중요한 부분은 사용자로부터 시작됩니다. 사람들의 디렉토리만 있다면 사람들이 서로에 대해 알 수 있는 가장 기본적인 형태의 소셜 네트워크를 구축한 것입니다. 따라서 사용자가 할 수 있어야 하는 가장 중요한 일은 계정을 만드는 것입니다. 이 시점 이후에는 이 사용자 문서를 조작하거나 적어도 일부 측면을 조작하는 것이 나머지 과제입니다. 이에 대해 더 자세히 설명하기 전에 이 애플리케이션에 존재하는 기본 파일 구조에 대해 설명하겠습니다. 이는 Touchbase의 작동 방식을 이해하는 데 매우 중요합니다.

파일 구조

이 파일 구조에 대한 일반적인 숙련도를 가정하겠지만, 이 파일 구조가 매우 익숙하지 않은 경우 Nic Raboy의 Node.js 및 Couchbase로 게임 API 생성 튜토리얼을 참조하세요. 여기를 클릭하세요.

우리의 app.js 파일에서 필요한 설정의 대부분을 완료했을 것입니다. 이 게시물에서는 먼저 다음을 참조해 주시기 바랍니다. routes/routes.js. 여기에는 '/api/registerUser' 엔드포인트. Node.js나 API 기반 애플리케이션을 처음 접하는 분들에게 엔드포인트는 단순히 REST API 호출이 데이터를 백엔드로 전송하는 곳입니다. 예를 들어 프런트엔드에서 다음과 같은 엔드포인트로 일종의 http POST 요청을 했다고 가정해 보겠습니다. '/api/registerUser'를 사용하면 이 엔드포인트로 일부 사용자 데이터를 보낼 수 있으며, 이 엔드포인트는 백엔드에서 필요한 작업(사용자 문서 생성)을 수행한 후 일부 메시지(일반적으로 JSON 객체)를 다시 전송합니다.

'/api/registerUser' API

이 경우 /api/registerUser' 엔드포인트는 사용자가 Touchbase 사이트에 등록하기 위해 작성한 양식의 내용을 포함하는 JSON 객체를 수신합니다. 백엔드에서 Touchbase는 몇 가지 기본 유효성 검사를 수행하여 이 계정에 필요한 사용자 정보가 입력되었는지 확인하여 합법적인 계정으로 사용할 수 있는지 확인합니다. 먼저 개체에 이름, 이메일, 비밀번호 속성이 있는지 확인합니다. 이러한 정보는 프런트엔드에서도 모두 확인되며 오류 메시지가 표시되지만 프런트엔드 유효성 검사만으로는 충분하지 않습니다. 프런트엔드 자바스크립트는 최종 사용자가 쉽게 조작할 수 있으며 애플리케이션의 보안 허점을 노출시킬 수 있습니다. 이를 염두에 두고 프런트엔드에서 수행한 동일한 유효성 검사를 백엔드에서 다시 수행합니다. 특정 필드는 정규식을 사용하여 유효성을 검사합니다. 예를 들어, 비밀번호가 충분히 강력한지 확인하기 위해. 그런 다음 비밀번호와 확인 비밀번호를 대조하여 동일한지 확인합니다. 또한 이메일을 사용하기 전에 이미 사용되지 않았는지 확인하기 위해 이메일을 확인합니다. User.advancedSearch (이 기능은 곧 자세히 설명할 예정입니다). 이 모든 조건이 충족되면 User.create 함수가 실행됩니다.

보려면 'User.create' 기능으로 이동하여 models/usermodel.js를 클릭하거나 아래 코드 조각을 보세요. 이 파일에는 다음과 같은 함수가 있습니다. 'User.create'. 이 함수는 사용자의 다양한 측면을 설명하는 JSON 문서를 생성하는 데 사용됩니다. 보시다시피 이러한 측면 중 일부는 사용자 입력에서 직접 제공되며, 이 입력은 'User.create' 함수를 'params'와 같이 사용자의 입력 없이 문서가 생성될 때 생성되는 것도 있습니다. 예를 들어 임의의 UUID(범용 고유 식별자)가 사용자의 문서 ID로 생성되는 경우가 있습니다. 여기. 이를 위해 저는 UUID 노드 모듈. 이 문서 ID(UUID)는 향후 모든 용도로 사용자를 식별할 수 있는 고유한 방법이어야 합니다. 각 문서가 완전히 고유한지 확인하기 위해 UUID를 사용하며, 문서가 최대한 유연하게 사용될 수 있도록 하기 위해 특정 사용 속성을 문서 ID로 사용하는 것을 피합니다. 앞으로는 주로 속성을 기준으로 사용자를 검색할 것이며, 특정 사용자를 검색하는 경우가 아니라면 이러한 UUID를 직접 사용하는 경우는 거의 없을 것입니다.

또한 사용자 문서가 생성된 시간을 유지하고 시간 경과에 따른 로그인을 살펴보기 위해 JavaScript를 사용하여 생성한 현재 시간을 사용한 다음 이를 'timeTracker' 중첩 객체에 삽입합니다. 이러한 변수가 문자열 속성, 드롭다운 속성 및 배열 속성별로 이상하게 분할되어 있는 것을 볼 수 있습니다. 그 이유는 주로 Couchbase의 N1QL 쿼리 언어를 사용하여 이러한 속성을 쿼리하는 방식 때문입니다. 이에 대한 자세한 설명은 파트 0 의 블로그 시리즈에 대해 설명했지만, 본질적으로 이런 식으로 구조화된 이유는 코드를 거의 변경하지 않고도 용도를 변경할 수 있도록 하기 위해서입니다. 로그인 내에서 사용자가 입력한 비밀번호의 해시 버전인 'password' 속성을 볼 수 있습니다. 이는 다음을 사용하여 수행됩니다. 노드 포지.

'User.create' 함수

이제 N1QL 삽입 문을 사용하여 문서를 만듭니다. 오류가 발생하면 콜백 함수가 호출되는 것을 볼 수 있습니다. 매개 변수로 전달된 콜백이 있음을 알 수 있습니다. 'function(error, result)' 에서 볼 수 있습니다. routes/routes.js 파일에 저장합니다. 이는 성공과 오류를 처리하기 위해 동일한 구문을 반복해서 작성하는 것을 피하기 위해 사용됩니다. 삽입이 성공하면(발생해야 하는 결과가 발생하면) 그 결과는 다시 routes/routes.js 함수에 대한 '/api/registerUser'에 저장되며, 추가 작업에 계속 사용됩니다. 그 후에는 이것이 'Session.makeVerification'.

N1QL '사용자 삽입' 쿼리

마지막 결과에서 생성한 정보는 사용자 ID와 사용자 문서가 포함된 JSON 객체 형태로 생성되었으며, 이 객체는 'User.create' 함수를 사용하세요. 입력할 문서의 예를 보려면 다음을 참조하세요. 파트 0. 이 정보는 다음 용도로 사용됩니다. 'Session.makeVerification' 를 입력하여 사용자의 이메일 주소를 확인하는 데 사용되는 이메일을 생성합니다. 그렇지 않으면 계정에 액세스할 수 없습니다.

계정에서 이 추가 인증 단계를 수행하려는 경우 다음 글인 2부에서 Couchbase, Nodemailer 및 Sengrid API를 사용한 이메일 인증에 대해 설명합니다.

시간 내주셔서 감사드리며 도움이 되셨기를 바랍니다. 질문, 피드백 또는 비판이 있으면 아래에 댓글을 남겨 주세요.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 프라나브 마유람

프라나브 마유람은 N1QL 쿼리 언어 인턴, Couchbase입니다. Couchbase Server, Node.js, Express 및 Angular.js를 사용하여 소셜 네트워크 플랫폼인 Touchbase를 구축했습니다.

댓글 하나

  1. [지금까지 파트 0과 파트 1에서는 애플리케이션에 사용되는 데이터 모델과 사용자 문서를 다루고, 파트 2에서는 [...]를 검증합니다.]

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.