30
loading...
This website collects cookies to deliver better user experience
$ mkdir sequelize-app
$ cd sequelize-app
$ npm init -y
$ npm i express
const express = require('express');
const morgan = require('morgan');
const bodyParser = require('body-parser');
// router import
const user = require('./routes/user')
const app = express();
app.use(express.json())
app.use(morgan('tiny'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// Routing
app.use('/api', user)
// simple route
app.get("/", (req, res) => {
res.json({ message: "Welcome to application." });
});
// set port, listen for requests
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});
$ npm i morgan
$ npm install body-parser
$ npm i nodemon
"scripts": {
"start": "nodemon app.js"
},
$ npm install -g sequelize-cli
$ npm install sequelize-cli
$ npm i sequelize pg
$ sequelize init
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
{
"development": {
"username": "dream99",
"password": "dream99",
"database": "sequlizeApp",
"host": "127.0.0.1",
"dialect": "postgres"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "postgres"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "postgres"
}
}
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here
}
};
User.init({
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING
}, {
sequelize,
modelName: 'User',
});
return User;
};
sequelize db:migrate
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Users', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Users');
}
};
$ npx sequelize-cli seed:generate --name demo-user
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.bulkInsert('Users', [{
firstName: 'John',
lastName: 'Doe',
email: '[email protected]',
createdAt: new Date(),
updatedAt: new Date()
}], {});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('Users', null, {});
}
};
$ npx sequelize-cli db:seed:all
const User = require('../models').User
module.exports = {
// create account
signUp: (req, res) => {
let { firstName, lastName, email} = req.body
User.create({
firstName,
lastName,
email
}).then((user) => {
return res.status(201).json({
"message": "User created successfully",
user
}).catch(err => {
return res.status(400).json({err})
})
})
},
updateSignUp: (req, res) => {
let { firstName, lastName, email} = req.body
let id = req.params.id
User.findOne({
where: {id:id}
}).then( user => {
if (user){
user.update({firstName, lastName, email})
.then((updateUser) => {
return res.status(202).json({
"message": "User updated successfully",
updateUser
})
})
}else{
return res.status(206).json({
"message": "User not found"
})
}
}).catch(error => {
return res.status(400).json({
"error": error
})
})
},
// get all users
getAllUsers: ( req, res ) => {
User.findAll( {
attributes: ['id', 'firstName', 'lastName', 'email'],
limit: 5,
order: [['id', 'DESC']]
}).then(users => {
return res.status(200).json({
users
})
}).catch(err => {
return res.status(400).json({err})
})
},
// get single user by id
getSingleUser:(req, res) => {
let id = req.params.id
User.findByPk(id)
.then((user) => {
return res.status(200).json({user})
}).catch(err => {
return res.status(400).json({err})
})
},
// delete user by id
deleteSingleUser: (req, res) => {
let id = req.params.id
User.destroy({
where: {id: id}
}).then(() =>{
return res.status(200).json({
"message": "User Deleted successfully"
})
}).catch(err =>{
return res.status(400).json({error})
})
},
// delete all users
deleteAllUsers: (req, res) => {
User.destroy({
truncate: true
}).then(() => {
return res.status(200).json({
success: true,
"message": "All Users deleted"
})
}).catch(err => {
return res.status(400).json({
err
})
})
},
}
const express = require('express')
const router = express.Router()
const {
signUp,
updateSignUp ,
getAllUsers,
getSingleUser,
deleteSingleUser,
deleteAllUsers,
} = require('../controllers/user')
// -------------------------CUSTOM ROUTE-------------------------
router.post('/sign-up',
signUp
)
router.put('/sign-up/:id',
updateSignUp
)
router.get('/sign-up/',
getAllUsers
)
router.get('/sign-up/:id',
getSingleUser
)
router.delete('/sign-up/:id',
deleteSingleUser
)
router.delete('/sign-up/',
deleteAllUsers
)
// -------------------------EXPORT ROUTER-------------------------
module.exports = router