【发布时间】:2014-10-19 00:38:26
【问题描述】:
在一个实践示例中,我正在尝试创建一个 restfull API,非常简单。普通的 GET 和 POST 方法效果很好,但是指向 /api/bears/:bear_id 的 GET、PUT 和 DELETE 方法只是停留在那里,等待......
// CONFIGURACION INICIAL //
// ===================== //
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var db = mongoose.connection;
// CONFIGURANDO APP //
// ================ //
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
mongoose.connect('mongodb://localhost:27017/bears');
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function cb () {
console.log('conexion establecida');
})
var Bear = require('./models/bear_model.js');
var port = process.env.PORT || 8080; // seteo del puerto
var router = express.Router(); // instancia del ruteador
上面是简单的配置,下面是给我带来问题的 sn-p:
router.use(function (req, res, next) { // simple logger
if (req.method === 'GET')
console.log('executing query on id %s', JSON.stringify(req.params));
else if (req.method === 'PUT')
console.log('executing query on id %s', JSON.stringify(req.params));
else
console.log('executing query on id %s', JSON.stringify(req.params));
});
router.route('/bears/:bear_id')
.get(function (req, res) {
Bear.findById(req.params.bear_id, function (err, bear) {
if (err)
res.send(err);
res.json(bear);
});
}) // end GET /bears/:bear_id
.put(function (req, res) {
Bear.findById(req.params.bear_id, function (err, bear) {
if (err)
res.send(err)
bear.name = req.body.name; // Update bear_id of Bear
bear.save(function (err) {
if (err)
res.send(err);
res.json({msg: 'Bear actualizado!'});
});
});
}) // end PUT /bears/:bear_id
.delete(function (req, res) {
Bear.remove({
_id: req.params.bear_id
}, function (err, bear) {
if (err)
res.send(err);
res.json({ msg: 'Bear eliminado' });
});
}); // end DELETE /bears/:id && router /bears/:id
app.use('/api', router); // la api usará como base el prefijo /api
使用参数记录我执行一条路线:executing query on {},因此,req.params.bear_id 根本没有被捕获,如果我通过 req.params.bears_id 更改 req.params,显然我得到一个未定义的日志,所以我阅读了 de docs 并认为我在这个过程中做得很好,但没有发现问题。
【问题讨论】:
标签: node.js rest express routes