– Tutorial “Sequelize belongstomany Example – Sequelize Many to Many Association Example with Nodejs/Express + MySQL”
In the post, we got started with Sequelize One-To-Many association. Today we’re gonna create Sequelize Many-To-Many association models with NodeJS/Express, MySQL.
Tutorial: “Sequelize One-to-Many Create Example Association Model – with Nodejs/Express + MySQL database”.
In the post, we got started with Sequelize One-To-One association. Today we’re gonna create Sequelize One-To-Many association models with NodeJS/Express, MySQL.
Now we define Book’s routes in ./app/route/book.route.js file as below code:
module.exports = function(app) {
const books = require('../controller/book.controller.js');
// Retrieve all Books
app.get('/api/books', books.findAll);
// Retrieve a single Book by Id
app.get('/api/books/:bookId', books.findOne);
}
Implement Nodejs Express RestAPI Controller
In the tutorial “Mongoose change _id to id”, we implement Book’s controller in ./app/controller/book.controller.js file as below sourcecode:
const Book = require('../model/book.model.js');
// FETCH all Books
exports.findAll = (req, res) => {
Book.find()
.then(books => {
let returnedBooks = [];
for (let i = 0; i < books.length; i++) {
returnedBooks.push(books[i].transform());
}
res.send(returnedBooks);
}).catch(err => {
res.status(500).send({
message: err.message
});
});
};
// FIND a Book
exports.findOne = (req, res) => {
Book.findById(req.params.bookId)
.then(book => {
if(!book) {
return res.status(404).send({
message: "Book not found with id " + req.params.bookId
});
}
res.send(book.transform());
}).catch(err => {
if(err.kind === 'ObjectId') {
return res.status(404).send({
message: "Book not found with id " + req.params.bookId
});
}
return res.status(500).send({
message: "Error retrieving Book with id " + req.params.bookId
});
});
};
Nodejs Express Server.js
Now we define server.js file for Nodejs/Express server running at 8080 port as below sourcecode:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json())
// Configuring the database
const dbConfig = require('./app/config/mongodb.config.js');
const mongoose = require('mongoose');
const Book = require('./app/model/book.model.js');
mongoose.Promise = global.Promise;
// Connecting to the database
mongoose.connect(dbConfig.url)
.then(() => {
console.log("Successfully connected to MongoDB.");
initial();
}).catch(err => {
console.log('Could not connect to MongoDB.');
process.exit();
});
require('./app/route/book.route.js')(app);
// Create a Server
var server = app.listen(8080, function () {
var host = server.address().address
var port = server.address().port
console.log("App listening at http://%s:%s", host, port)
})
function initial(){
Book.create({
title: "Origin",
author: "Dan Brown",
description: "Origin thrusts Robert Langdon into the dangerous ntersectio of humankind's two most enduring questions",
published: "2017"
});
Book.create({
title: "Happy Potter and the Deathly Hallows",
author: "J.K. Rowling",
description: "The seventh and final novel of the Harry Potter series.",
published: "2007"
});
Book.create({
title: "The 100-Year-Old Man Who Climbed Out the Window and Disappeared",
author: "Jonas Jonasson",
description: "",
published: "2009"
});
}