node.js - 如何使提交的表单在出现在索引页面之前经过批准
问题描述
嗨,我正在为人们构建一个应用程序,以便能够在工作板上发布工作。但是目前,如果发布了一份工作,它会直接进入主页/索引页面,我不希望这样。我希望能够在职位发布之前在职位板/主页/索引页面上查看职位发布。有这方面的教程吗?
我目前正在使用以前的 Node 教程来构建这个项目。
// Example code, but similar to actual code
//models config
let jobSchema = new mongoose.Schema({
title: String,
category: String,
description: String,
type: String,
url: String,
email: String,
apply: String,
location: String,
company: String,
path: String,
created: {type: Date, default: Date.now}
})
let Job = mongoose.model('job', jobSchema);
// {type: String, default: "placeholdeimage.jpg"}
//routes config
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/uploads/');
},
filename: function (req, file, cb) {
var originalname = file.originalname;
var extension = originalname.split(".");
filename = Date.now() + '.' + extension[extension.length-1];
cb(null, filename);
}
});
app.get('/', (req, res) =>{
res.redirect('/jobs')
})
app.get('/jobs', (req, res) =>{
Job.find({}).sort({ date: -1}).find(function(err, jobs){
if(err){
console.log('error')
}
return res.render('index', {jobs: jobs})
})
})
//add form route
app.get('/jobs/add', (req, res) => {
res.render('add')
})
app.post('/jobs', multer({storage: storage, dest:
'./public/uploads/'}).single('file'), (req, res) => {
req.body.description = req.sanitize(req.body.description);
Job.create( (err, addJob) =>{
if(req.file){
let fullPath = "uploads/"+req.file.filename;
let document = {
title: req.body.title,
category: req.body.category,
description: req.body.description,
type: req.body.type,
url: req.body.url,
email: req.body.email,
apply: req.body.apply,
location: req.body.location,
company: req.body.company,
path: fullPath
};
let job = new Job(document);
job.save()
}else{
console.log('file not uploaded')
logo = 'noimage.jpg'
}
//redirect to index page
return res.redirect('/jobs')
})
})
app.get('/jobs/:id', (req, res) => {
Job.findById(req.params.id, (err, jobDetails) => {
if(err){
res.redirect('/jobs')
}else{
res.render('details', {job: jobDetails});
}
})
})
app.listen(port, process.env.PORT, process.env.IP, ()=> console.log(`Server
is running on ${port}`))
<div class="container">
<% for (const job of jobs) { %>
<div class="row">
<div class="column logo" style="width:10%;">
<img src='<%= job.path %>'>
</div>
<div class="column title">
<h2>
<%=job.title%>
</h2>
<p>
<%=job.company%>
</p>
</div>
<div class="column type">
<h2>
<%=job.type%>
</h2>
</div>
<div class="column location">
<h2>
<%=job.location%>
</h2>
</div>
<div class="column">
<h2><a href="/jobs/<%= job._id %>"><button>Apply</button></a></h2>
</div>
</div>
<hr>
<% } %>
</div>
解决方案
您可以添加字段approved: { type: Boolean, default: false }
并JobSchema
检索具有条件的作业。
Job.find({approved:true}).sort({ date: -1})...
推荐阅读
- android - 在三星 S 系列或谷歌像素设备上找不到钛加速器相机
- python - 在辅助驱动器上安装 Anaconda (Windows)
- javascript - 带有 dotenv 和 nodejs 的未定义 process.env 变量
- android - 是否可以在没有任何服务器(仅本地文件)的情况下使用 chaquopy 在项目中包含库?
- python - 在有限制的公共整数上合并对
- ios - 飞行模式下的 MapKit
- css - 更改角材料选择列表中的复选框大小
- javascript - Modal 中的表格是每一行而不是单独填充的
- matlab - Matlab:ode45 和 4 阶 Runge-Kutta 方法产生不同的值
- ruby-on-rails - 如何将 Rails 环境变量放在 apple-app-site-association 文件中以获取通用链接?