Node.js应用程序中的编辑不起作用
Edit in Node.js app not working
我正在构建的节点应用程序出现了一些问题,我附加到页面上的编辑按钮不起作用(没有显示特定条目),当我点击编辑时,我只得到了404错误
stores/index.ejs
<table class="table table-striped">
<thead>
<tr>
<th>Pet Store Name</th>
<th>Address</th>
<th>Phone Number</th>
<th>Website</th>
</tr>
</thead>
<tbody>
<!--starting table loop-->
<% for (var i = 0; i < stores.length; i++) { %>
<tr>
<td><%= stores[i].name %></td>
<td><%= stores[i].address %></td>
<td><%= stores[i].phone %></td>
<td><a href="http://<%= stores[i].website %>">http://<%= stores[i].website %></a></td>
<td><a href="/stores/edit/<%= stores[i]._id %>"><button class="btn btn-primary"
type="button">Edit</button></a></td>
</tr>
<% } %>
</tbody>
</table>
edit.ejs
<form method="post" action="<%= stores._id %>">
<fieldset class="form-group">
<label for="name" class="col-sm-2">Pet Store Name: </label>
<input name="name" id="name" required value="<%= stores.name %>" />
</fieldset>
<fieldset class="form-group">
<label for="address" class="col-sm-2">Address: *</label>
<input name="address" id="address" required value="<%= stores.address %>" />
</fieldset>
<fieldset class="form-group">
<label for="phone" class="col-sm-2">Phone Number: *</label>
<input name="phone" id="phone" value="<%= stores.phone %>" />
</fieldset>
<fieldset class="form-group">
<label for="website" class="col-sm-2">Website: </label>
<input name="website" id="website" value="<%= stores.website %>" />
</fieldset>
<div>
<%= stores.created %>
</div>
<button class="btn btn-primary col-sm-offset-2">Save</button>
<a href="/stores/delete/<%= stores._id %>" title="Delete" class="confirmation">
<button class="btn btn-danger" type="button">Delete</button>
</a>
</form>
index.js
// link to dependencies
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var passport = require('passport');
//link to store model
var Store = require('../models/store');
//set up get handler for password protected store page
router.get('/', isLoggedIn, function (req, res, next) {
//use the store model to get directory listing
Store.find(function (err, stores) {
if (err) {
console.log(err);
res.end(err);
}
else {
//show we got data back, show the view and pass the data through it
res.render('stores/index', {
title: 'Pet Store Directory',
stores: stores
});
}
})
});
// get handler for add to display a blank form
router.get('/add', isLoggedIn, function (req, res, next) {
res.render('stores/add', {
title: 'Add a new Pet Store'
});
});
// post handler for adding to the form
router.post('/add', isLoggedIn, function (req, res, next) {
//save new pet store
Store.create({
name: req.body.name,
address: req.body.address,
phone: req.body.phone,
website: req.body.website
}
);
// redirect to auth store page
res.redirect('/stores');
});
//get handler for edit to show content from entry
router.get('/id', isLoggedIn, function(req, res, next){
//create id variable to the store id from the url
var id = req.params.id;
//look up the selected store
Store.findById(id, function(err, store){
if (err) {
console.log(err);
res.end(err);
}
else {
//show edit form
res.render('stores/edit', {
title: 'Store Details',
store: store
});
}
});
});
//post handler for edit to update the store
router.post('/id', isLoggedIn, function(req, res, next){
//create id variable to the store id from the url
var id = req.params.id;
//fill the store object
var store = new Store({
name: req.body.name,
address: req.body.address,
phone: req.body.phone,
website: req.body.website
});
//use mongoose and store model to update
Store.update( {_id: id}, store, function(err){
if (err){
console.log(err);
res.end(err);
}
else {
res.redirect('/stores')
}
});
});
//get handler for delete using the store id
router.get('/delete/:id', isLoggedIn, function(req, res, next){
//get id variable to the store id from the url
var id = req.params.id;
console.log('trying to delete');
Store.remove({_id: id}, function(err){
if (err) {
console.log(err);
res.end(err);
}
else {
// show updated article list
res.redirect('/stores');
}
});
});
//authorization check
function isLoggedIn(req, res, next) {
//is the user authenticated
if (req.isAuthenticated()){
return next();
}
else {
res.redirect('/auth/login');
}
}
// make public
module.exports = router;
我已经花了几个小时研究代码,这将有助于重新审视它。
github是github.com/krl87/comp2106a2
托管于comp2106a2.herokuapp.com
提前感谢!kayley
我在任何地方都看不到/edit/:id
的路由。有一个只是说/id
。我想你是想把/edit/:id
放在那里。所以改变:
router.get('/id', isLoggedIn, function(req, res, next){
至
router.get('/edit/:id', isLoggedIn, function(req, res, next){
与相同。更改:
router.post('/id', isLoggedIn, function(req, res, next){
至
router.post('/edit/:id', isLoggedIn, function(req, res, next){
相关文章:
- 编辑不起作用的表单的特定行和重置特定字段
- `ie9`-contenteditable false在父级可编辑时不起作用
- 在内联编辑的情况下,Knockout绑定不起作用
- jqGrid-保存内联编辑不起作用
- Node.js应用程序中的编辑不起作用
- 所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用
- CKEditor编辑器.resize()在jQuery中不起作用
- 编辑器导出的json文件不起作用
- 在我的项目中,添加、删除和编辑功能不起作用
- 禁用编辑和删除按钮在IE9中不起作用,但在IE11中起作用
- 单击动态创建的编辑按钮不起作用
- Emberjs 车把内容绑定编辑字段不起作用
- AngularJS编辑记录行为不起作用
- 箭头键在内容中不起作用可编辑
- 如何在选择框中设置只读 false,当选中复选框时,它将是可编辑的.在我的jquery代码中,禁用不起作用
- 数据表可编辑插件在数据表中动态添加行后不起作用
- 添加,编辑,删除不起作用
- AngularJS使用模板进行内联编辑不起作用
- 剑道网格内的剑道组合框编辑不起作用
- 本地存储编辑不起作用