<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Munisekhar Udavalapati</title>
    <description>The latest articles on DEV Community by Munisekhar Udavalapati (@munisekhar_udavapati).</description>
    <link>https://dev.to/munisekhar_udavapati</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2165166%2F2f447cab-9425-4605-bec6-67f135245fe2.png</url>
      <title>DEV Community: Munisekhar Udavalapati</title>
      <link>https://dev.to/munisekhar_udavapati</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/munisekhar_udavapati"/>
    <language>en</language>
    <item>
      <title>BBPS API SPECIFICATIONS</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Thu, 09 Jan 2025 13:09:49 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/bbps-api-specifications-pkh</link>
      <guid>https://dev.to/munisekhar_udavapati/bbps-api-specifications-pkh</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Bill Fetch Request&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: To request bill information from a biller.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Participants&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Customer BBPOU to BBPCU&lt;/strong&gt;: The initial request is made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BBPCU to Biller BBPOU&lt;/strong&gt;: The request is forwarded to the appropriate Biller BBPOU.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Structure&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Header (&lt;code&gt;&amp;lt;Head&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Contains API metadata, including version, timestamp, origination instance, and a unique reference ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics (&lt;code&gt;&amp;lt;Analytics&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Meta tags for logging request times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction (&lt;code&gt;&amp;lt;Txn&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes risk scores and transaction identifiers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer Details (&lt;code&gt;&amp;lt;Customer&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes customer-specific information like mobile number, email, Aadhaar, and PAN.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Information (&lt;code&gt;&amp;lt;Agent&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes device-related details like IP address, IMEI, and initiating channel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bill Details (&lt;code&gt;&amp;lt;BillDetails&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes the biller ID and customer parameters necessary for fetching the bill.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Bill Fetch Response&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;: To return the requested bill details.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Participants&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Biller BBPOU to BBPCU&lt;/strong&gt;: The response is generated by the Biller BBPOU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BBPCU to Customer BBPOU&lt;/strong&gt;: The response is forwarded to the Customer BBPOU.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Structure&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Header (&lt;code&gt;&amp;lt;Head&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Metadata similar to the request structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reason (&lt;code&gt;&amp;lt;Reason&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Provides approval references, response codes, and compliance details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transaction (&lt;code&gt;&amp;lt;Txn&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Mirrors the transaction data from the request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biller Response (&lt;code&gt;&amp;lt;BillerResponse&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes customer-specific information such as:

&lt;ul&gt;
&lt;li&gt;Customer Name&lt;/li&gt;
&lt;li&gt;Bill Amount&lt;/li&gt;
&lt;li&gt;Due Date&lt;/li&gt;
&lt;li&gt;Bill Period&lt;/li&gt;
&lt;li&gt;Additional bill-related information.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Additional Info (&lt;code&gt;&amp;lt;AdditionalInfo&amp;gt;&lt;/code&gt;)&lt;/strong&gt;: Includes supplementary metadata tags.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Key Tags&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Extensive use of &lt;code&gt;&amp;lt;Tag&amp;gt;&lt;/code&gt; elements to include metadata across various sections.&lt;/li&gt;
&lt;li&gt;Example tags include transaction ID, timestamp, biller-specific data, and compliance codes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;XSD Definition&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The XML Schema Definition (XSD) ensures the validation of the structure of requests and responses.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Key Elements&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;BillFetchRequest&amp;gt;&lt;/code&gt;: Encapsulates the request structure.&lt;/li&gt;
&lt;li&gt;Nested elements include:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Head&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Analytics&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Txn&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Customer&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Agent&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;BillDetails&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Attributes&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Namespace&lt;/strong&gt;: &lt;code&gt;http://bbps.org/schema&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation Constraints&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;minOccurs&lt;/code&gt; and &lt;code&gt;maxOccurs&lt;/code&gt; to define the occurrence of elements.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Usage&lt;/strong&gt;:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Ensure the XML request adheres to the defined schema structure.&lt;/li&gt;
&lt;li&gt;Validate the XML request against the XSD to ensure compliance.&lt;/li&gt;
&lt;li&gt;Handle response codes effectively:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;000&lt;/code&gt;: Success.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;200&lt;/code&gt;: Failure or other statuses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;By adhering to these standards and validation practices, participants in the BBPS ecosystem can ensure secure, efficient, and compliant bill payment transactions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding the Bharat Bill Payment System (BBPS) Ecosystem description:</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Thu, 09 Jan 2025 12:11:00 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/understanding-the-bharat-bill-payment-system-bbps-ecosystemdescription-l34</link>
      <guid>https://dev.to/munisekhar_udavapati/understanding-the-bharat-bill-payment-system-bbps-ecosystemdescription-l34</guid>
      <description>&lt;h2&gt;
  
  
  A comprehensive guide to the roles and interactions of Customer BBPOU, BBPCU, and Biller BBPOU in the BBPS ecosystem.
&lt;/h2&gt;




&lt;p&gt;title: "Understanding the Bharat Bill Payment System (BBPS) Ecosystem"&lt;br&gt;
description: "A comprehensive guide to the roles and interactions of Customer BBPOU, BBPCU, and Biller BBPOU in the BBPS ecosystem."&lt;/p&gt;

&lt;h2&gt;
  
  
  tags: fintech, payments, bbps, india, npci
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Understanding the Bharat Bill Payment System (BBPS) Ecosystem
&lt;/h1&gt;

&lt;p&gt;The Bharat Bill Payment System (BBPS) is a unified platform enabling seamless and secure bill payment services. Below, we explore the roles of key entities within this ecosystem and how they interact with one another.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Entities in the BBPS Ecosystem
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Customer BBPOU (Bharat Bill Payment Operating Unit)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The front-end entity directly interacting with customers to provide bill payment services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;: Banks, payment apps like Paytm, PhonePe, Google Pay, or other authorized service providers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collects bill details and payment from customers.&lt;/li&gt;
&lt;li&gt;Forwards bill and payment details to the BBPCU.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. BBPCU (Bharat Bill Payment Central Unit)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The central hub managed by NPCI (National Payments Corporation of India).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acts as the intermediary for routing transactions between Customer BBPOUs and Biller BBPOUs.&lt;/li&gt;
&lt;li&gt;Ensures seamless communication, transaction processing, and settlement within the ecosystem.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Biller BBPOU
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The back-end entity connecting directly with billers (utility companies, service providers, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;: Banks or non-bank entities integrated with billers like electricity boards and telecom operators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retrieves bill details from the biller.&lt;/li&gt;
&lt;li&gt;Updates the payment status back to the BBPCU.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Interaction Flow in BBPS
&lt;/h2&gt;

&lt;p&gt;To illustrate the interactions among these entities, consider a customer paying an electricity bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Customer to Customer BBPOU&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The customer logs into a mobile app (e.g., Paytm or their bank app).&lt;/li&gt;
&lt;li&gt;They enter their bill details (e.g., customer ID or account number).&lt;/li&gt;
&lt;li&gt;The Customer BBPOU requests the bill details through the BBPCU.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Customer BBPOU to BBPCU&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The Customer BBPOU forwards the bill fetch request to the BBPCU.&lt;/li&gt;
&lt;li&gt;The BBPCU identifies the appropriate Biller BBPOU responsible for the biller (e.g., XYZ Electricity Board).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: BBPCU to Biller BBPOU&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The BBPCU routes the bill fetch request to the identified Biller BBPOU.&lt;/li&gt;
&lt;li&gt;The Biller BBPOU retrieves the bill details from the biller.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4: Biller BBPOU to BBPCU&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The Biller BBPOU sends the bill details (e.g., amount due, due date) back to the BBPCU.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 5: BBPCU to Customer BBPOU&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The BBPCU routes the bill details to the Customer BBPOU.&lt;/li&gt;
&lt;li&gt;The Customer BBPOU presents the bill details to the customer for payment.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 6: Payment Flow&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The customer initiates the payment (e.g., via UPI, debit card, or net banking).&lt;/li&gt;
&lt;li&gt;The payment information flows back to the BBPCU from the Customer BBPOU.&lt;/li&gt;
&lt;li&gt;The BBPCU forwards the payment details to the Biller BBPOU.&lt;/li&gt;
&lt;li&gt;The Biller BBPOU updates the biller about the payment and confirms the payment status back to the BBPCU.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 7: Confirmation Flow&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The BBPCU sends the payment confirmation to the Customer BBPOU.&lt;/li&gt;
&lt;li&gt;The Customer BBPOU provides the confirmation to the customer (e.g., a payment receipt).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary of Roles
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Entity&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customer BBPOU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interacts with the customer for bill fetching, payment initiation, and confirmation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BBPCU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Acts as the central hub, routing requests and responses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Biller BBPOU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interfaces with the biller for bill retrieval and payment updates.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Illustrative Interaction Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
plaintext
Customer --&amp;gt; Customer BBPOU --&amp;gt; BBPCU --&amp;gt; Biller BBPOU --&amp;gt; Biller
      ^                                                    |
      |&amp;lt;-------------------------------------------------- |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>BBPS Bill Fetch API: A Complete Guide</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Thu, 09 Jan 2025 11:41:25 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/bbps-bill-fetch-api-a-complete-guide-2g7p</link>
      <guid>https://dev.to/munisekhar_udavapati/bbps-bill-fetch-api-a-complete-guide-2g7p</guid>
      <description>&lt;p&gt;Sample Request and Response Structures:&lt;/p&gt;

&lt;p&gt;Bill Fetch Request: Describes XML-based structures sent by the customer (BBPOU) or intermediary (BBPCU) to fetch bill details.&lt;br&gt;
Bill Fetch Response: Contains the bill details fetched from the biller or returned to the customer.&lt;br&gt;
Key XML Tags and Attributes:&lt;/p&gt;

: Metadata such as API version, timestamp (ts), and unique identifiers (refId).&lt;br&gt;
: Transaction information like timestamp (ts), message ID (msgId), and risk scores.&lt;br&gt;
: Customer-related information such as mobile number, Aadhaar, PAN, and tags for additional attributes.&lt;br&gt;
: Data about the agent initiating the transaction, including device information (e.g., IMEI, IP, MAC).&lt;br&gt;
: Biller identification and customer reference parameters to uniquely identify a bill.&lt;br&gt;
Tag Details:

&lt;p&gt;Explanation of each XML element and attribute with their occurrence constraints, e.g., mandatory (1..1) or optional (0..n).&lt;br&gt;
Sample XSD (XML Schema Definition):&lt;/p&gt;

&lt;p&gt;Defines the structure and constraints of the BillFetchRequest message.&lt;br&gt;
Analytics Tags:&lt;/p&gt;

&lt;p&gt;Metadata for monitoring or logging purposes (e.g., FETCHREQUESTSTART, FETCHREQUESTEND).&lt;br&gt;
Risk Scores:&lt;/p&gt;

&lt;p&gt;Evaluates risk levels (TXNRISK) for the transaction from different providers.&lt;br&gt;
Biller Response:&lt;/p&gt;

&lt;p&gt;Includes bill details like customer name, due amount, due date, bill date, and breakdown of charges.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>BBPS Bill Fetch API: A Complete Guide</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Wed, 08 Jan 2025 08:31:07 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/bbps-bill-fetch-api-a-complete-guide-3m8f</link>
      <guid>https://dev.to/munisekhar_udavapati/bbps-bill-fetch-api-a-complete-guide-3m8f</guid>
      <description>&lt;p&gt;The Bill Fetch API allows apps to retrieve bill details for customers. For example, if a customer wants to check their electricity bill, this API fetches the required information like bill amount and due date.&lt;/p&gt;

&lt;p&gt;How Does It Work?&lt;/p&gt;

&lt;p&gt;Here’s how the API works:&lt;/p&gt;

&lt;p&gt;You send a request with details like the customer’s mobile number or account number.&lt;/p&gt;

&lt;p&gt;The API responds with the bill details, such as the amount and due date.&lt;/p&gt;

&lt;p&gt;Let’s look at an example.&lt;/p&gt;

&lt;p&gt;Example Request&lt;/p&gt;

&lt;p&gt;Imagine a user named John wants to check his electricity bill. The app sends the following request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;BillFetchRequest&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Head&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;apiVer&amp;gt;&lt;/span&gt;1.2.0&lt;span class="nt"&gt;&amp;lt;/apiVer&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;reqTs&amp;gt;&lt;/span&gt;2025-01-08T10:30:00&lt;span class="nt"&gt;&amp;lt;/reqTs&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;txnId&amp;gt;&lt;/span&gt;TXN12345&lt;span class="nt"&gt;&amp;lt;/txnId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;refId&amp;gt;&lt;/span&gt;REF67890&lt;span class="nt"&gt;&amp;lt;/refId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/Head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Txn&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;msgId&amp;gt;&lt;/span&gt;MSG98765&lt;span class="nt"&gt;&amp;lt;/msgId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;txnTs&amp;gt;&lt;/span&gt;2025-01-08T10:30:00&lt;span class="nt"&gt;&amp;lt;/txnTs&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;riskScore&amp;gt;&lt;/span&gt;LOW&lt;span class="nt"&gt;&amp;lt;/riskScore&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/Txn&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Customer&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;custParam1&amp;gt;&lt;/span&gt;9876543210&lt;span class="nt"&gt;&amp;lt;/custParam1&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;&amp;lt;!-- John’s mobile number --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/Customer&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Agent&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;imei&amp;gt;&lt;/span&gt;123456789012345&lt;span class="nt"&gt;&amp;lt;/imei&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;ip&amp;gt;&lt;/span&gt;192.168.1.1&lt;span class="nt"&gt;&amp;lt;/ip&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/Agent&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/BillFetchRequest&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What’s Happening Here?&lt;/p&gt;

: Contains basic info like API version and unique transaction IDs.

&lt;p&gt;: Includes John’s mobile number.&lt;/p&gt;

&lt;p&gt;: Includes device details like IMEI and IP address.&lt;/p&gt;
&lt;h2&gt;
  
  
  Example Response
&lt;/h2&gt;

&lt;p&gt;The API sends back this response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;BillFetchResponse&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Head&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;apiVer&amp;gt;&lt;/span&gt;1.2.0&lt;span class="nt"&gt;&amp;lt;/apiVer&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;resTs&amp;gt;&lt;/span&gt;2025-01-08T10:31:00&lt;span class="nt"&gt;&amp;lt;/resTs&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;txnId&amp;gt;&lt;/span&gt;TXN12345&lt;span class="nt"&gt;&amp;lt;/txnId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;refId&amp;gt;&lt;/span&gt;REF67890&lt;span class="nt"&gt;&amp;lt;/refId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/Head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;BillDetails&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;billerId&amp;gt;&lt;/span&gt;BILLER123&lt;span class="nt"&gt;&amp;lt;/billerId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;billAmount&amp;gt;&lt;/span&gt;500.00&lt;span class="nt"&gt;&amp;lt;/billAmount&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;billDueDate&amp;gt;&lt;/span&gt;2025-01-15&lt;span class="nt"&gt;&amp;lt;/billDueDate&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;customerName&amp;gt;&lt;/span&gt;John Doe&lt;span class="nt"&gt;&amp;lt;/customerName&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/BillDetails&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/BillFetchResponse&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What Does This Mean?&lt;/p&gt;

&lt;p&gt;Bill Amount: ₹500.00&lt;/p&gt;

&lt;p&gt;Due Date: 15th January 2025&lt;/p&gt;

&lt;p&gt;Customer Name: John Doe&lt;/p&gt;

&lt;p&gt;This info can now be displayed to John in the app.&lt;/p&gt;

&lt;p&gt;Key Features&lt;/p&gt;

&lt;p&gt;Real-Time Updates: Get the latest bill info instantly.&lt;/p&gt;

&lt;p&gt;Custom Parameters: Add extra details using .&lt;/p&gt;

&lt;p&gt;Security: Transmit data securely using HTTPS.&lt;/p&gt;

&lt;p&gt;Pro Tips for Developers&lt;/p&gt;

&lt;p&gt;Use Valid Timestamps: Always use the YYYY-MM-DDTHH:mm:ss format.&lt;/p&gt;

&lt;p&gt;Validate Your XML: Use an XML Schema (XSD) to ensure requests and responses are structured correctly.&lt;/p&gt;

&lt;p&gt;Handle Errors Gracefully: If the API returns an error, show a friendly message to the user.&lt;/p&gt;

&lt;p&gt;Real-Life Use Case&lt;/p&gt;

&lt;p&gt;Scenario:&lt;/p&gt;

&lt;p&gt;A mobile app lets users pay their utility bills. When a user enters their account number, the app uses the Bill Fetch API to get the bill details. If everything checks out, the user can proceed to payment.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;The BBPS Bill Fetch API is a powerful tool for integrating bill services into your app. By following the simple XML structure and best practices, you can deliver a seamless experience for your users.&lt;/p&gt;

&lt;p&gt;Have questions? Leave a comment or refer to the official BBPS documentation for more details!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nest Js popular packages</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Tue, 07 Jan 2025 12:31:28 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/nest-js-popular-packages-2e74</link>
      <guid>https://dev.to/munisekhar_udavapati/nest-js-popular-packages-2e74</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Popular Packages&lt;/th&gt;
&lt;th&gt;Deeper Packages&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core Framework&lt;/td&gt;
&lt;td&gt;@nestjs/common&lt;/td&gt;
&lt;td&gt;@nestjs/core&lt;/td&gt;
&lt;td&gt;Core NestJS features, dependency injection, decorators, and lifecycle hooks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MongoDB Integration&lt;/td&gt;
&lt;td&gt;@nestjs/mongoose&lt;/td&gt;
&lt;td&gt;mongoose&lt;/td&gt;
&lt;td&gt;Simplified MongoDB integration with Mongoose.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validation&lt;/td&gt;
&lt;td&gt;class-validator&lt;/td&gt;
&lt;td&gt;class-transformer&lt;/td&gt;
&lt;td&gt;Request validation and object transformation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;@nestjs/config&lt;/td&gt;
&lt;td&gt;dotenv&lt;/td&gt;
&lt;td&gt;Manage environment variables and configurations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;@nestjs/passport&lt;/td&gt;
&lt;td&gt;passport-local&lt;/td&gt;
&lt;td&gt;Add Passport.js authentication strategies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;@nestjs/jwt&lt;/td&gt;
&lt;td&gt;passport-jwt&lt;/td&gt;
&lt;td&gt;Add JWT-based authentication.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphQL Support&lt;/td&gt;
&lt;td&gt;@nestjs/graphql&lt;/td&gt;
&lt;td&gt;graphql-tools, apollo-server&lt;/td&gt;
&lt;td&gt;Build GraphQL APIs with NestJS.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File Handling&lt;/td&gt;
&lt;td&gt;@nestjs/platform-express&lt;/td&gt;
&lt;td&gt;@nestjs/multer&lt;/td&gt;
&lt;td&gt;Handle file uploads and manage static assets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging&lt;/td&gt;
&lt;td&gt;nestjs-pino&lt;/td&gt;
&lt;td&gt;pino, winston&lt;/td&gt;
&lt;td&gt;Advanced logging with lightweight or feature-rich loggers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caching&lt;/td&gt;
&lt;td&gt;@nestjs/redis&lt;/td&gt;
&lt;td&gt;cache-manager, ioredis&lt;/td&gt;
&lt;td&gt;Redis caching for high performance.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;@nestjs/testing&lt;/td&gt;
&lt;td&gt;jest&lt;/td&gt;
&lt;td&gt;Tools for writing unit and integration tests.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swagger Documentation&lt;/td&gt;
&lt;td&gt;@nestjs/swagger&lt;/td&gt;
&lt;td&gt;swagger-ui-express&lt;/td&gt;
&lt;td&gt;Automatically generate API documentation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microservices&lt;/td&gt;
&lt;td&gt;@nestjs/microservices&lt;/td&gt;
&lt;td&gt;amqp-connection-manager, nats&lt;/td&gt;
&lt;td&gt;Build microservices and event-based applications.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job Scheduling&lt;/td&gt;
&lt;td&gt;@nestjs/schedule&lt;/td&gt;
&lt;td&gt;node-schedule, bull&lt;/td&gt;
&lt;td&gt;Schedule tasks or manage job queues.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Advanced MongoDB Tools&lt;/td&gt;
&lt;td&gt;nestjs-mongoose-pagination&lt;/td&gt;
&lt;td&gt;mongoose-paginate-v2&lt;/td&gt;
&lt;td&gt;Handle MongoDB pagination efficiently.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;nestjs-aggregate&lt;/td&gt;
&lt;td&gt;mongoose-aggregate-pipeline&lt;/td&gt;
&lt;td&gt;Simplify MongoDB aggregation queries.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Bharat Bill Payment System (BBPS) uses various status codes</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Tue, 07 Jan 2025 11:34:18 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/bharat-bill-payment-system-bbps-uses-various-status-codes-30op</link>
      <guid>https://dev.to/munisekhar_udavapati/bharat-bill-payment-system-bbps-uses-various-status-codes-30op</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| **Code** | **Description**                                              | **Category**             |
|----------|--------------------------------------------------------------|--------------------------|
| 000      | Success - The transaction was successful.                    | Success                  |
| 100      | Transaction Pending - Processing by biller.                  | Pending/Processing       |
| 101      | Awaiting Confirmation from the biller.                       | Pending/Processing       |
| 200      | Transaction Failed - Issue at bank or biller.                | Failure/Error            |
| 201      | Authentication Failure - User verification failed.           | Failure/Error            |
| 202      | Invalid Parameters - Missing or invalid input.               | Failure/Error            |
| 203      | Biller Not Available - System temporarily unavailable.       | Failure/Error            |
| 204      | Payment Rejected - Denied by biller or system.               | Failure/Error            |
| 205      | Duplicate Transaction - Multiple attempts detected.          | Failure/Error            |
| 206      | Insufficient Balance - Insufficient funds in the account.    | Failure/Error            |
| 300      | System Error - Generic system/technical issue.               | System/Technical Issue   |
| 301      | Timeout - No response from biller or system.                 | System/Technical Issue   |
| 302      | Service Unavailable - BBPS or biller down.                   | System/Technical Issue   |
| 400      | Refund Initiated - Refund process started.                   | Refund/Reversal          |
| 401      | Refund Processed - Refund completed.                         | Refund/Reversal          |
| 402      | Refund Failed - Refund could not be processed.               | Refund/Reversal          |
| 501      | Biller ID Invalid - Incorrect biller details.                | Biller-Specific          |
| 502      | Consumer ID Not Found - Invalid customer details.            | Biller-Specific          |
| 999      | Unknown Error - Unidentified issue occurred.                 | Miscellaneous            |

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Mastering Decorators in NestJS: A Comprehensive Guide</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Tue, 07 Jan 2025 05:54:12 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/mastering-decorators-in-nestjs-a-comprehensive-guide-32fh</link>
      <guid>https://dev.to/munisekhar_udavapati/mastering-decorators-in-nestjs-a-comprehensive-guide-32fh</guid>
      <description>&lt;h2&gt;
  
  
  What Are Decorators?
&lt;/h2&gt;

&lt;p&gt;Decorators are functions that add metadata to a class, method, or property at runtime. In NestJS, they play a crucial role in defining routes, injecting dependencies, applying guards, and more.&lt;/p&gt;

&lt;p&gt;Built-in Decorators in NestJS&lt;br&gt;
NestJS provides several built-in decorators to simplify application development:&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Routing Decorators
&lt;/h2&gt;

&lt;p&gt;@Controller(): Defines a controller for handling requests.&lt;br&gt;
@Get(), &lt;a class="mentioned-user" href="https://dev.to/post"&gt;@post&lt;/a&gt;(), @Put(), @Delete(): Define route handlers for HTTP methods.&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Copy&lt;/span&gt; &lt;span class="nx"&gt;code&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;findAll&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;This action returns all users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Request Object Decorators
&lt;a class="mentioned-user" href="https://dev.to/body"&gt;@body&lt;/a&gt;(): Access the request body.
@Query(): Access query parameters.
&lt;a class="mentioned-user" href="https://dev.to/param"&gt;@param&lt;/a&gt;(): Access route parameters.
Example:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Copy&lt;/span&gt; &lt;span class="nx"&gt;code&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="nx"&gt;createUserDto&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CreateUserDto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`User &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;createUserDto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; created!`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;Dependency&lt;/span&gt; &lt;span class="nx"&gt;Injection&lt;/span&gt; &lt;span class="nx"&gt;Decorators&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Injectable&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nx"&gt;Marks&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;DI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Inject&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nx"&gt;Explicitly&lt;/span&gt; &lt;span class="nx"&gt;inject&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;specific&lt;/span&gt; &lt;span class="nx"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="nx"&gt;Creating&lt;/span&gt; &lt;span class="nx"&gt;Custom&lt;/span&gt; &lt;span class="nx"&gt;Decorators&lt;/span&gt;
&lt;span class="nx"&gt;For&lt;/span&gt; &lt;span class="nx"&gt;advanced&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;cases&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;custom&lt;/span&gt; &lt;span class="nx"&gt;decorators&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;encapsulate&lt;/span&gt; &lt;span class="nx"&gt;reusable&lt;/span&gt; &lt;span class="nx"&gt;logic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;Here&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="nx"&gt;how&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="nx"&gt;Example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Extracting&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;Token&lt;/span&gt;
&lt;span class="nx"&gt;Create&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;custom&lt;/span&gt; &lt;span class="nx"&gt;decorator&lt;/span&gt; &lt;span class="nx"&gt;using&lt;/span&gt; &lt;span class="nx"&gt;createParamDecorator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="nx"&gt;typescript&lt;/span&gt;
&lt;span class="nx"&gt;Copy&lt;/span&gt; &lt;span class="nx"&gt;code&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createParamDecorator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ExecutionContext&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@nestjs/common&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ExtractToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createParamDecorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;unknown&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ExecutionContext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;switchToHttp&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;authHeader&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;authHeader&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;authHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bearer &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;authHeader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the decorator in your controller:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;auth&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AuthController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;profile&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;getProfile&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;ExtractToken&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Token: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why Use Custom Decorators?&lt;br&gt;
Custom decorators improve code reusability, readability, and maintainability. Instead of repeating logic across controllers, encapsulate it in a decorator for consistent and cleaner code.&lt;/p&gt;

&lt;p&gt;Tips for Using Decorators in NestJS&lt;br&gt;
Understand Execution Contexts: Decorators like createParamDecorator provide access to request objects, making them ideal for extracting and transforming data.&lt;br&gt;
Leverage Metadata: Use libraries like class-validator to define validation decorators.&lt;br&gt;
Combine Decorators: Use multiple decorators for complex functionalities, such as guards, interceptors, and filters.&lt;br&gt;
Conclusion&lt;br&gt;
Decorators in NestJS offer powerful tools for building clean, scalable applications. Whether you're using built-in decorators or creating custom ones, mastering them will take your NestJS skills to the next level.&lt;/p&gt;

&lt;p&gt;Learn More&lt;br&gt;
Official NestJS Docs: Custom Decorators&lt;br&gt;
OpenAPI Integration: Swagger Decorators&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Put&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Delete&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Param&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Body&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@nestjs/common&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// DTO for creating or updating users&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreateUserDto&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Base route: '/users'&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;UserController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt; &lt;span class="c1"&gt;// Example in-memory users array for demonstration&lt;/span&gt;

  &lt;span class="c1"&gt;// GET /users&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;findAll&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// GET /users/:id&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;:id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;findOne&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;Param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`User with ID &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found`&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// POST /users&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="nx"&gt;createUserDto&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CreateUserDto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newUser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;createUserDto&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newUser&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User created&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;newUser&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// PUT /users/:id&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;:id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;Param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="nx"&gt;updateUserDto&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;CreateUserDto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userIndex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findIndex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userIndex&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`User with ID &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found`&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;userIndex&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;updateUserDto&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User updated&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;userIndex&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// DELETE /users/:id&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;:id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(@&lt;/span&gt;&lt;span class="nd"&gt;Param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userIndex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findIndex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userIndex&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`User with ID &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found`&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deletedUser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userIndex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User deleted&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;deletedUser&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Node JS || Epress js || By Munisekhar Udavalapati</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Sat, 12 Oct 2024 13:35:03 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/node-js-epress-js-by-munisekhar-udavalapati-1kh9</link>
      <guid>https://dev.to/munisekhar_udavapati/node-js-epress-js-by-munisekhar-udavalapati-1kh9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Express js&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;to write simple express js application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;npm init&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm install express&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;expreass&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;rse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;succuss&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;port 3000 is success&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.write JWT token authentication.&lt;br&gt;
&lt;code&gt;npm install jsonwebtoken&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jsonwebtoken&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newToken&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sekhar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sekhar_32&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sec_jwt_key&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;&lt;span class="na"&gt;expiresIn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;5m&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newToken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jwtVerify&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newToken&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sec_jwt_key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jwtVerify&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.password encryption in node js&lt;br&gt;
&lt;code&gt;npm install bcrypt&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bcrypt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bcrypt&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ex_password&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hashPassword&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;bcrypt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verifyPassword&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;bcrypt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;compare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;hashPassword&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;verifyPassword&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.node js status codes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;404===&amp;gt;not found
401===&amp;gt;unauthorised
400===&amp;gt;bad requst
200===&amp;gt;ok
201===&amp;gt;create
202===&amp;gt;accepted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5.http methods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET
PUT
POST
DELETE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6.clinet filse send&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;public&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;home.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>node</category>
      <category>express</category>
      <category>javascript</category>
    </item>
    <item>
      <title>SQL Sequelize || By Munisekhar Udavalapati || MySQL || SQL</title>
      <dc:creator>Munisekhar Udavalapati</dc:creator>
      <pubDate>Sat, 12 Oct 2024 06:09:57 +0000</pubDate>
      <link>https://dev.to/munisekhar_udavapati/sql-sequelize-by-munisekhar-udavalapati-mysql-sql-44ph</link>
      <guid>https://dev.to/munisekhar_udavapati/sql-sequelize-by-munisekhar-udavalapati-mysql-sql-44ph</guid>
      <description>&lt;p&gt;&lt;strong&gt;Installing sequelize&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save sequelize&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;You can also install MySQL. to use this command&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save mysql2&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting to the database&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;javaScript   const {Sequelize} =require('sequlize');&lt;br&gt;
   const sequelize =new Sequelize('database','username','password',{&lt;br&gt;
       host:'localhost',&lt;br&gt;
       dialect;&lt;br&gt;
   });&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing the connection&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;javaScript try{&lt;br&gt;
    await sequlize.authenticate();&lt;br&gt;
    console.log('Connection success');&lt;br&gt;
}catch(err){&lt;br&gt;
    console.error('Unable to connect to the database',err);&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Model
&lt;/h2&gt;

&lt;p&gt;Models are reprent's table from the database&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Sequelize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sequelize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sequelize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../util/db.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//database connection locations&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sequelize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//table name &lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
     &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;Sequlize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INTEGER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;autoIncrement&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;primaryKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
     &lt;span class="p"&gt;},&lt;/span&gt;
     &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
       &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;Sequelize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="na"&gt;allowNull&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="p"&gt;},&lt;/span&gt;
     &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;Sequelize&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;allowNull&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>node</category>
      <category>mysql</category>
      <category>sequelize</category>
    </item>
  </channel>
</rss>
