Я этот отдых апи:Экспресс REST получить сообщение от слизняка
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Post = mongoose.model('Post'),
_ = require('lodash');
/**
* Find post by id
*/
exports.post = function(req, res, next, id) {
Post.findOne({ '_id': id }, function (err, post) {
if (err) {
return next(err);
}
if (!post) {
return next(new Error('Failed to load post ' + id));
}
req.post = post;
next();
});
};
/**
* Create a post
*/
exports.create = function(req, res) {
var post = new Post(req.body);
post.save(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Update a post
*/
exports.update = function(req, res) {
var post = req.post;
post = _.extend(post, req.body);
post.save(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Delete a post
*/
exports.destroy = function(req, res) {
var post = req.post;
post.remove(function(err) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(post);
}
});
};
/**
* Show a post by id
*/
exports.show = function(req, res) {
res.jsonp(req.post);
};
/**
* List of public posts
*/
exports.all = function(req, res) {
Post.find().sort('-created').exec(function(err, posts) {
if (err) {
res.jsonp(500,{ error: err.message });
} else {
res.jsonp(200,posts);
}
});
};
с
/* Post */
var postController = require('../app/controllers/api/post');
app.post('/api/post', postController.create);
app.get('/api/post', postController.all);
app.put('/api/post/:postId', postController.update);
app.del('/api/post/:postId', postController.destroy);
app.get('/api/post/:postId', postController.show);
/* Post Param */
app.param('postId', postController.post);
Теперь мне нужен другой маршрут, как API/запись /: пробкового
но Я не знаю, куда обратиться, можете ли вы дать мне подсказку, пожалуйста? Может ли хороший способ справиться с slug вместо id?
как
exports.post = function(req, res, next, slug) {
Post.findOne({'slug': slug}, function (err, post) {
if (err) {
return next(err);
}
if (!post) {
return next(new Error('Failed to load post ' + slug));
}
req.post = post;
next();
});
};
Это не сработает. ': postId' и': slug' - это просто имена переменных. Маршрут остается прежним. – Amberlamps
Я имею в виду использование slug вместо id во всем. У меня есть уникальный slug и индекс – Whisher
. Если вам не нужны разные маршруты для ': postId' и': slug', я не знаю, в чем ваша проблема? Просто используйте заданные маршруты для ': slug'. – Amberlamps