👉 Shop.js
const path = require('path');
const express = require('express');
const productsController = require('../controllers/products')
const router = express.Router();
router.get('/', productsController.getProducts);
module.exports = router;
👉 C products.js
const Product = require('../models/product');
exports.getAddProduct = (req, res, next) => {
res.render('add-product', {
pageTitle: 'Add Product',
path: '/admin/add-product',
});
};
exports.postAddProduct = (req, res, next) => {
const product = new Product(req.body.title);
console.log("input log 1",product);
product.save();
console.log("input log 2",product);
res.redirect('/');
};
exports.getProducts = (req, res, next) => {
Product.fetchAll((products) => {
console.log("4. getProducts (Shop page view)+", products);
res.render('shop', {
prods: products,
pageTitle: 'Shop',
path: '/',
hasProducts: products.length > 0,
});
});
};
👉 M product.js
const fs = require('fs');
const path = require('path');
const p = path.join(
path.dirname(process.mainModule.filename),
'data',
'products.json'
);
const getProductsFromFile = (cb) => {
console.log("why?", cb.toString());
fs.readFile(p, (err, fileContent) => {
if (err) {
cb([]);
} else { cb(JSON.parse(fileContent)); }
});
};
module.exports = class Product {
constructor(t) {
this.title = t;
console.log(t);
}
save() {
getProductsFromFile(products => {
console.log("1. getProductsFromFile +", products);
products.push(this);
console.log("2. this +", this);
fs.writeFile(p, JSON.stringify(products), (err) => {
console.log("3. products +", products);
});
});
}
static fetchAll(cb) {
getProductsFromFile(cb)
}
}
🧐 console.log
알아보기
input log 1 Product { title: '알아보기' }
why? products => {
console.log("1. getProductsFromFile +", products);
products.push(this);
console.log("2. this +", this);
fs.writeFile(p, JSON.stringify(products), (err) => {
// console.log(err);
// console.log(products);
console.log("3. products +", products);
});
}
input log 2 Product { title: '알아보기' }
1. getProductsFromFile + []
2. this + Product { title: '알아보기' }
[nodemon] restarting due to changes...
3. products + [ Product { title: '알아보기' } ]
why? (products) => {
console.log("4. getProducts (Shop페이지를 표기해라)+", products);
res.render('shop', {
prods: products,
pageTitle: 'Shop',
path: '/',
hasProducts: products.length > 0,
activeShop: true,
productCSS: true
});
}
4. getProducts (Shop페이지를 표기해라)+ [ { title: '알아보기' } ]
- <\input name="title"\>에 알아보기 입력
- module.exports = class Product {
constructor(t) {
this.title = t;
}의 콘솔 로그 \알아보기\