Reputation: 1
GET /admin/add-product 200 70.156 ms - 3932 Handlebars: Access has been denied to resolve the property "status" because it is not an "own property" of its parent. You can add a runtime option to disable the check or this warning: See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details POST /admin/add-product 404 31.120 ms - 3921
can anyone help me to slove this problem . I tried submiting a form to collect data in admin page but the res.post is not working ,The browser shows 'not found' and the above error message is from the console.but the nodemon still continues to run
app.js file
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const { engine : hbs } = require("express-handlebars")
var fileUpload = require('express-fileupload')
var userRouter = require('./routes/user');
var adminRouter = require('./routes/admin');
var handlebars = require('handlebars')
const template = handlebars.compile("{{aString.trim}}");
const result = template(
{ aString: " abc " },
{
allowedProtoMethods: {
trim: true
}
}
);
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.engine('hbs',hbs({extname:'hbs',defaultLayout:'layout',layoutsDir:__dirname+'/views/layout/',partialsDir:__dirname+'/views/partials/'}))
app.use(fileUpload())
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', userRouter);
app.use('/admin', adminRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
admin.js file
var express = require('express');
const { log } = require('handlebars');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
let products = [
{
name:"Apple iPhone 15",
description:"Apple iPhone 15 (128 GB) - Black",
category:"Mobile",
price:"₹72,690",
image:"https://m.media-amazon.com/images/I/71657TiFeHL._SX679_.jpg"
},
{
name:"Apple iPhone 15 Plus",
description:"Apple iPhone 15 Plus (128 GB) - Blue",
category:"Mobile",
price:"₹80,990",
image:"https://m.media-amazon.com/images/I/71PjpS59XLL._SX679_.jpg"
},
{
name:"Apple iPhone 15 Pro",
description:"Apple iPhone 15 Pro (1 TB) - Black Titanium",
category:"Mobile",
price:"₹1,77,990",
image:"https://m.media-amazon.com/images/I/81+GIkwqLIL._SX679_.jpg"
},
{
name:"Apple iPhone 15 Pro Max",
description:"Apple iPhone 15 Pro Max (256 GB) - Black Titanium",
category:"Mobile",
price:"₹1,48,900",
image:"https://m.media-amazon.com/images/I/81Os1SDWpcL._SX679_.jpg"
}
]
res.render('admin/view-products',{products,admin:true})
});
router.get('/add-product',(req,res)=>{
res.render('admin/add-product')
})
router.post('/admin/add-product',(req,res)=>{
console.log(req.body);
console.log(req.files.Image);
})
module.exports = router;
add-product.hbs file
<section>
<div class="container">
<div class="row">
<div class="col-md-6">
<h2 class="text-center">Add Product</h2>
<form action="/admin/add-product" method="post" enctype="multipart/form-data">
<label for="">Name</label>
<input type="text" name="Name" class="form-control">
<label for="">Description</label>
<input type="text" name="Description" class="form-control">
<label for="">Category</label>
<input type="text" name="Category" class="form-control">
<label for="">Price</label>
<input type="text" name="Price" class="form-control">
<label for="">Image</label>
<input type="file" name="Image" class="form-control">
<br>
<button type="submit" class="btn btn-success">Submit</button>
</form>
</div>
</div>
</div>
</section>
Upvotes: 0
Views: 49