我有一些学生模型保存到一个mongodb实例,我正在尝试通过用户名获取。这是我为Student定义的mongoose模型:
var studentSchema = mongoose.Schema({
local : {
username : String,
password : String,
}
});在我的路由文件中,我正在尝试编写一个router.param,这样我就可以对/students/<用户名>执行CRUD操作。我的代码如下所示:
router.param('student', function(req, res, next, username) {
var query = Student.findOne({ 'username' : username });
query.exec(function(err, student) {
if (err)
return next(err);
if (!student)
return next(new Error("Can't find student."));
req.student = student;
return next();
});
});我能够成功地查询我的/students路由以获取数据库中的所有学生文档,但是我的router.param代码似乎无法工作。错误。我不确定我的router.param代码出了什么问题。
任何帮助都是非常感谢的!
发布于 2015-01-14 11:09:05
如果使用router.param,则每次传递该参数时都将执行此操作。我不知道这是否是您想要的,但据我所知,您应该使用如下内容:
router.get('/students/:username', function(req, res) {
Student.findOne({'username': req.params.username}, function (doc) {这样,当您将用户名发送到特定路由时,您将找到该用户并显示所需的所有数据。
如果有帮助,请告诉我。
发布于 2015-01-15 11:26:27
Student.findOne({ 'local.username' : username });
发布于 2016-10-22 01:03:58
当您执行任何操作时,Param名称应该是相同的!
router.param('student', function(req, res, next, student) { <--- Should be student
var query = Student.findOne({ 'username' : student });<--- Should be student
query.exec(function(err, student) {
if (err)
return next(err);
if (!student)
return next(new Error("Can't find student."));
req.student = student;
return next();
});
});https://stackoverflow.com/questions/27934612
复制相似问题