<?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: Eric Pietrowicz</title>
    <description>The latest articles on DEV Community by Eric Pietrowicz (@zciwor).</description>
    <link>https://dev.to/zciwor</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%2F982535%2Fce202160-b9f3-48bf-8d30-431600d5ca3d.jpeg</url>
      <title>DEV Community: Eric Pietrowicz</title>
      <link>https://dev.to/zciwor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zciwor"/>
    <language>en</language>
    <item>
      <title>How to deploy a Typescript Parse Server on Elasticbeanstalk</title>
      <dc:creator>Eric Pietrowicz</dc:creator>
      <pubDate>Thu, 01 Dec 2022 14:03:43 +0000</pubDate>
      <link>https://dev.to/zciwor/how-to-deploy-a-typescript-parse-server-on-elasticbeanstalk-406c</link>
      <guid>https://dev.to/zciwor/how-to-deploy-a-typescript-parse-server-on-elasticbeanstalk-406c</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://www.ubiqueiot.com/posts/parse-server-eb-deploy" rel="noopener noreferrer"&gt;ubiqueIoT&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that we have our Typescript Parse Server compiling and connecting to our MonoDB database, let's get it deployed to Elasticbeanstalk. &lt;/p&gt;

&lt;p&gt;Download and install the &lt;a href="https://github.com/aws/aws-elastic-beanstalk-cli" rel="noopener noreferrer"&gt;Elasticbeanstalk CLI&lt;/a&gt; and the &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" rel="noopener noreferrer"&gt;AWS CLI.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;aws configure&lt;/code&gt; to sign in to your account with the CLI. &lt;/p&gt;

&lt;p&gt;Log into AWS console and &lt;a href="https://us-east-1.console.aws.amazon.com/elasticbeanstalk/home?region=us-east-1#/newEnvironment" rel="noopener noreferrer"&gt;create a new elastic beanstalk instance&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Choose &lt;code&gt;web server environment&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaceo40va4c8g33x3fw7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faaceo40va4c8g33x3fw7.png" alt="new application 1" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give your new application a name:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2whrm20xs3pv255aa27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2whrm20xs3pv255aa27.png" alt="new application 2" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is helpful here to choose a specific domain rather than letting it auto generate so that we can update our Parse config. Take note of the domain that you give your instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxugvy6t6mpqam3rfg3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxugvy6t6mpqam3rfg3t.png" alt="new application 3" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose a Node16 environment with the default settings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficj0yfe7ththqw1v05sp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficj0yfe7ththqw1v05sp.png" alt="new application 4" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Allow the instance to be created with a sample application and click &lt;code&gt;create environment&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F681gmxngobfgqb9dbl3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F681gmxngobfgqb9dbl3k.png" alt="new application 5" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While your environment is deploying, navigate to &lt;code&gt;./.ebextensions/app.config&lt;/code&gt; of your Parse Server project and update the &lt;code&gt;SERVER_URL&lt;/code&gt; property with the domain you specified. &lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;SERVER_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://parseservertutorial1.us-east-1.elasticbeanstalk.com/parse"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;./.ebextensions/app.config&lt;/code&gt; file contains all of the environment variables that our Elasticbeanstalk instance will be deployed with. &lt;/p&gt;

&lt;p&gt;Here you can add the &lt;code&gt;APP_ID&lt;/code&gt; and &lt;code&gt;MASTER_KEY&lt;/code&gt; that you want to use for production. &lt;/p&gt;

&lt;p&gt;Note that this file should not be checked into git to keep these keys secure. &lt;/p&gt;

&lt;p&gt;We can also update the &lt;code&gt;DATABASE_URI&lt;/code&gt; environment variable. You can then remove it from &lt;code&gt;./src/index.js&lt;/code&gt; so that we keep our connection string secure. &lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring the Elasticbeanstalk Environment
&lt;/h2&gt;

&lt;p&gt;After the sample code is deployed, we'll need to change the instance type to &lt;code&gt;t2.small&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;❗️ This is critical, otherwise the &lt;code&gt;npm install&lt;/code&gt; command will fail on the server. &lt;code&gt;t2.micro&lt;/code&gt; is too small of an instance for Parse Server.&lt;/p&gt;

&lt;p&gt;In the side panel of your Elasticbeanstalk console, choose the configuration option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4i1uyuy5anp4ezvpxulf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4i1uyuy5anp4ezvpxulf.png" alt="instance size 1" width="171" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scroll down until you find the capacity section and choose Edit. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xiy6y4jovxz3k0ivgdp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xiy6y4jovxz3k0ivgdp.png" alt="instance size 2" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find the 'instance types' section and remove &lt;code&gt;t2.micro&lt;/code&gt; while keeping &lt;code&gt;t2.small&lt;/code&gt; or larger.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr500g78mhfvojakrowbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr500g78mhfvojakrowbc.png" alt="instance size 3" width="800" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Initialize our Parse Server as an Elasticbeanstalk instance
&lt;/h2&gt;

&lt;p&gt;In the project's terminal run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eb init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Answer the prompts by selecting the specified region and project name of our new instance when prompted. &lt;/p&gt;

&lt;p&gt;Make sure to choose &lt;code&gt;n&lt;/code&gt; when asked if you wish to continue with CodeCommit (assuming you are using Github).&lt;/p&gt;

&lt;p&gt;Note that &lt;code&gt;eb init&lt;/code&gt; will update our &lt;code&gt;.gitignore&lt;/code&gt; file automatically for us.&lt;/p&gt;

&lt;p&gt;Next, we need to make sure that our compiled javascript gets deployed and not our typescript.&lt;/p&gt;

&lt;p&gt;In your root directory, create a new folder called &lt;code&gt;./scripts/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add a file named &lt;code&gt;./scripts/dist.sh&lt;/code&gt; and fill it with the following shell command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# If the directory, `dist`, doesn't exist, create `dist`&lt;/span&gt;
&lt;span class="nb"&gt;stat &lt;/span&gt;dist &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;mkdir &lt;/span&gt;dist
&lt;span class="c"&gt;# Archive artifacts&lt;/span&gt;
zip dist/&lt;span class="nv"&gt;$npm_package_name&lt;/span&gt;.zip &lt;span class="nt"&gt;-r&lt;/span&gt; dist package.json package-lock.json .ebextensions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, move on over to your &lt;code&gt;package.json&lt;/code&gt; file and add two new scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"dist"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sh ./scripts/dist.sh"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tsc"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test them out by first running &lt;code&gt;npm run build&lt;/code&gt; and then running &lt;code&gt;npm run dist&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can confirm that everything is working by confirming there's a new .zip file in your &lt;code&gt;./dist&lt;/code&gt; folder. &lt;/p&gt;

&lt;p&gt;Now we'll need to tell the Elasticbeanstalk CLI which zip to upload. Head on over to the &lt;code&gt;./elasticbeanstalk/config.yml&lt;/code&gt; file that was generated with the &lt;code&gt;eb init&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Add a new stage called &lt;code&gt;deploy&lt;/code&gt; at the very bottom:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;branch-defaults&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;master&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Parseservertutorial1-env&lt;/span&gt;
&lt;span class="na"&gt;environment-defaults&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Parseservertutorial1-env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
    &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
&lt;span class="na"&gt;global&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;application_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;parse-server-tutorial-1&lt;/span&gt;
  &lt;span class="na"&gt;default_ec2_keyname&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;default_platform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Node.js 16 running on 64bit Amazon Linux &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;default_region&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;us-east-1&lt;/span&gt;
  &lt;span class="na"&gt;include_git_submodules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;instance_profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;platform_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;platform_version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
  &lt;span class="na"&gt;sc&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;git&lt;/span&gt;
  &lt;span class="na"&gt;workspace_type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Application&lt;/span&gt;
&lt;span class="c1"&gt;# New!&lt;/span&gt;
&lt;span class="c1"&gt;# Replace the "parse-server-example" with the name of your zip file&lt;/span&gt;
&lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;artifact&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dist/parse-server-example.zip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's try to deploy and cross our fingers.&lt;/p&gt;

&lt;p&gt;But first make sure to commit your changes, otherwise the elasticbeanstalk CLI will not pick them up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"inital commit"&lt;/span&gt;
eb deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the deployment completes, you can test that your Parse Server is running as expected by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="nt"&gt;--request&lt;/span&gt; POST &lt;span class="s1"&gt;'http://&amp;lt;your domain here&amp;gt;/parse/functions/hello'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'X-Parse-Application-Id: &amp;lt;your app id here&amp;gt;'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get a response from your &lt;code&gt;./cloud/functions.ts&lt;/code&gt; file with a body of: &lt;code&gt;Hi&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now you have your Typescript Parse Server running on your Elasticbeanstalk environment!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=8NITVf0L5X0&amp;amp;ab_channel=50kT" rel="noopener noreferrer"&gt;Remember to set up VPC peering to secure your database connection!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>writing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How Configure a MongoDB Atlas Database for your Parse Server</title>
      <dc:creator>Eric Pietrowicz</dc:creator>
      <pubDate>Thu, 01 Dec 2022 13:58:14 +0000</pubDate>
      <link>https://dev.to/zciwor/how-configure-a-mongodb-atlas-database-for-your-parse-server-e8f</link>
      <guid>https://dev.to/zciwor/how-configure-a-mongodb-atlas-database-for-your-parse-server-e8f</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://www.ubiqueiot.com/posts/parse-server-mongodb" rel="noopener noreferrer"&gt;ubiqueIoT&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://www.ubiqueiot.com/posts/parse-server-getting-started" rel="noopener noreferrer"&gt;previous post&lt;/a&gt; we set up a Typescript Parse Server instance. Now, let's get our server connected to a MongoDB Atlas instance. &lt;/p&gt;

&lt;p&gt;First, create a &lt;a href="https://www.mongodb.com/cloud/atlas/register2" rel="noopener noreferrer"&gt;Mongo Atlas account&lt;/a&gt; and login and create a new project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6rf40qqza1uoov8c97i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6rf40qqza1uoov8c97i.png" alt="create new project 2" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add a database to your project by choosing the &lt;code&gt;Build a Database&lt;/code&gt; option in your new project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff34ozlepdj3ecuok1t1q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff34ozlepdj3ecuok1t1q.png" alt="create database 1" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdewgieoay2fn1eozgxor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdewgieoay2fn1eozgxor.png" alt="create database 2" width="580" height="1110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accept all of the defaults avoiding any paid tiers for now. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwspv1cbgcispmm16d2mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwspv1cbgcispmm16d2mq.png" alt="create database 3" width="800" height="808"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we'll need to add a new user that will be used to connect to the db. Keep note of your user account information, this will be used in our Parse code to connect to this instance. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7si40vnvutlsbx4k2s6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7si40vnvutlsbx4k2s6z.png" alt="add database user" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose the &lt;code&gt;Add My Current IP Address&lt;/code&gt; button so that your current IP address can connect locally to your database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk05kx4gt0m4t65yc9ndd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk05kx4gt0m4t65yc9ndd.png" alt="add IP address to your database" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once back in the main menu of your project, choose the connect option&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frs4j0nfuqii6tkzfw1lf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frs4j0nfuqii6tkzfw1lf.png" alt="connect to your database 1" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect using mongodb native drivers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqxja6fkz8ep38tmwc7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqxja6fkz8ep38tmwc7c.png" alt="connect to your database 2" width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the connection string&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmzgdn2w0gneb0t6skcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmzgdn2w0gneb0t6skcb.png" alt="connect to your database 3" width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paste the connection string to your &lt;code&gt;index.js&lt;/code&gt; file under your databaseURI config:&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="nx"&gt;databaseURI&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongodb+srv://&amp;lt;replace-with-username-(no-brackets)&amp;gt;:&amp;lt;replace-with-password-(no-brackets)&amp;gt;@cluster0.bh3ah.mongodb.net/?retryWrites=true&amp;amp;w=majority&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, go back to MongoDB Atlas and update the network access settings so that our ElasticBeanstalk instance can connect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpffuowxq2cez5pofms7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpffuowxq2cez5pofms7f.png" alt="network access 1" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cvuzlpuq5kt0td5iuus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9cvuzlpuq5kt0td5iuus.png" alt="network access 2" width="677" height="404"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;❗️ Please treat this as a temporary solution. When you go to production, you will need to set up a secure VPC connection between ElasticBeanstalk and MongoDB. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=8NITVf0L5X0&amp;amp;ab_channel=50kT" rel="noopener noreferrer"&gt;This is a great guide on how to configure VPC peering.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are some valuable notes in &lt;a href="https://medium.com/@faridhajnal14/using-mongo-db-atlas-with-aws-elasticbeanstalk-5e97d2340453" rel="noopener noreferrer"&gt;this guide&lt;/a&gt; as well.&lt;/p&gt;

&lt;p&gt;Let's run our Parse Server locally to make sure it can connect to the Mongo instance.&lt;/p&gt;

&lt;p&gt;In your Parse project run &lt;code&gt;npm run start&lt;/code&gt; and confirm that your server does not time out. It should now be connected to your database.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>python</category>
      <category>webassembly</category>
    </item>
    <item>
      <title>How to set up a Parse Server backend with Typescript</title>
      <dc:creator>Eric Pietrowicz</dc:creator>
      <pubDate>Thu, 01 Dec 2022 13:49:14 +0000</pubDate>
      <link>https://dev.to/zciwor/how-to-set-up-a-parse-server-backend-with-typescript-3hk6</link>
      <guid>https://dev.to/zciwor/how-to-set-up-a-parse-server-backend-with-typescript-3hk6</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://www.ubiqueiot.com/posts/parse-server-getting-started" rel="noopener noreferrer"&gt;ubiqueIoT&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://parseplatform.org/" rel="noopener noreferrer"&gt;Parse Server&lt;/a&gt; is a great way to quickly spin up a backend for your project. Parse is a Node based utility that sits on top of ExpressJS. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fparseplatform.org%2Fimg%2Flogo.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fparseplatform.org%2Fimg%2Flogo.svg" alt="parse logo" width="680" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It abstracts a lot of the backend code for us so we can spend more time focusing on the front end code. &lt;/p&gt;

&lt;p&gt;In combination with Parse, Typescript can really shine when dealing with our routing and database calls. &lt;/p&gt;

&lt;h2&gt;
  
  
  Let's walk through how to set up a Parse Server project using Typescript.
&lt;/h2&gt;

&lt;p&gt;First, start by cloning the &lt;a href="https://github.com/parse-community/parse-server-example" rel="noopener noreferrer"&gt;Parse Server Example project&lt;/a&gt; in a directory of your choosing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/parse-community/parse-server-example.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rename &lt;code&gt;parse-server-example&lt;/code&gt; directory to what ever you would like and open the folder in a code editor of your choice. &lt;/p&gt;

&lt;p&gt;Install the dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, install the typescript compiler globally, if not already installed on your local machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We also need to install typescript to your project in order to compile the Javascript code on our Elasticbeanstalk instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install our types for the Parse project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @types/parse &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add a &lt;code&gt;tsconfig.json&lt;/code&gt; file to the root directory of your project with the following options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"allowSyntheticDefaultImports"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commonjs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"esModuleInterop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"es2016"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"noImplicitAny"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"moduleResolution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"sourceMap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"outDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"rootDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"allowJs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"paths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"node_modules/*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"src/*"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"include"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"src/**/*"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make a &lt;code&gt;src&lt;/code&gt; folder in the root directory of this project. &lt;/p&gt;

&lt;p&gt;Move the entire &lt;code&gt;./cloud&lt;/code&gt; folder into &lt;code&gt;./src&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Move &lt;code&gt;index.js&lt;/code&gt; into the &lt;code&gt;./src&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Notice how this matches the path defined in the &lt;code&gt;rootDir&lt;/code&gt; tsconfig options.&lt;/p&gt;

&lt;p&gt;Run a &lt;code&gt;tsc&lt;/code&gt; command in your terminal (make sure to have typescript installed globally).&lt;/p&gt;

&lt;p&gt;If everything works as expected, a &lt;code&gt;./dist&lt;/code&gt; folder should've been generated by the typescript compiler. &lt;/p&gt;

&lt;p&gt;Finally, let's add the &lt;code&gt;dist&lt;/code&gt; folder to the &lt;code&gt;./.gitignore&lt;/code&gt; file so that we can be sure our code is compiled on the server each time we deploy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Typescript&lt;/span&gt;
&lt;span class="s"&gt;dist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tell Parse where to find our compiled Typescript code
&lt;/h2&gt;

&lt;p&gt;Open &lt;code&gt;./package.json&lt;/code&gt; and update the &lt;code&gt;start&lt;/code&gt; script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node ./dist/index.js"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rename &lt;code&gt;main.js&lt;/code&gt; → &lt;code&gt;main.ts&lt;/code&gt; and &lt;code&gt;functions.js&lt;/code&gt; → &lt;code&gt;functions.ts&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Replace contents of &lt;code&gt;functions.ts&lt;/code&gt; with the following. We're just adding the &lt;code&gt;any&lt;/code&gt; type to the request parameter for now to shut up our compiler.&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="nx"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Cloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&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;hello&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;req&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;any&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;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&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="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hi&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;Parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Cloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&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;asyncFunction&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &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;any&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="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&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;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&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="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hi async&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;Parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Cloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;beforeSave&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Test&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Saving test objects is not available.&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;Run another &lt;code&gt;tsc&lt;/code&gt; command in your root directory to confirm everything compiles correctly. You should see your &lt;code&gt;./dist&lt;/code&gt; folder filled javascript versions of your &lt;code&gt;main&lt;/code&gt; and &lt;code&gt;functions&lt;/code&gt; files. &lt;/p&gt;

&lt;p&gt;Try starting the server with an &lt;code&gt;npm run start&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;If everything is working as expected, we should see the server start, then error out after ~30 seconds because Parse could not connect to a MongoDB instance. &lt;/p&gt;

&lt;p&gt;We will configure the MongoDB Atlas instance in a future post.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
