Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - srclark/InsertUserDemo: Demo of a single page web app using node.js, express, mysql, sequelize, and jade · GitHub
Skip to content

Repository files navigation

InsertUserDemo

Demo of a single page web app using node.js, express, mysql, sequelize, and jade. This app is a single page app that includes a rest api that allows for inserting users into a table and deleting the users. My node version is 8.9.0. All non-global packages have been saved to package.json.

Clone and start

  1. Clone the repo
  2. In the command line, cd InsertUserDemo
  3. Install the packages, npm install
  4. Start the app, npm start
  5. Make sure you have started mySql. I use MySQL is system preferences, you may have a different method.
  6. Go to localhost:3000 in your browser
  7. Have fun!

Note: You can install nodemon node install -g nodemon to keep the app running while debugging. See https://www.npmjs.com/package/nodemon

Express

I used express-generator to jump start the project, then modified the projects to meet my needs. Express-generator creates jade files even though the template engine has been replaced by pug. I have not replaced jade with pug.

mysql/sequelize

I used MySQL 5.7 with the mysql2 and sequelize modules. I used sequelize and express-validator to prevent SQL injection. I installed sequelize-cli globally.

  • I created a database called 'users' in mysql. I did add a password, so your config might be slightly different than mine, see config/config.json
  • Install sequelize-cli npm install -g sequelize-cli
  • Use the cli to do the sequelize setup sequelize init
  • Edit config/config.json to use the correct database, password, etc.
  • Create the model: sequelize model:create --name users --attributes first_name:string,last_name:string,street_addr:string,city:string,state:string,zip:string
  • Set up the db tables sequelize db:migrate
  • I used the SequelPro app to give the fields, createdAt and updateAt (in the users table) a default value, CURRENT_TIMESTAMP

bootstrap styling

Although I'm used to creating user interfaces from designer specs, I completely used Bootstrap styling for my app.

Error Handling

Right now I'm handling all errors returned from sequelize with an alert. For express-validator errors, I'm showing just the first error above the user insert form.

About

Demo of a single page web app using node.js, express, mysql, sequelize, and jade

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages