exports.all = function(req, res) {
if(!req.query.questionid) {
Answer.find().sort('-created').populate('creator', 'username').exec(function(err, answers) {
if (err) {
res.json(500, err);
} else {
res.json(answers);
}
});
} else {
Answer.find().sort('-created').where('questionid', req.query.questionid).populate('creator', 'username').exec(function(err, answers) {
if (err) {
res.json(500, err);
} else {
res.json(answers);
}
});
}
};
我认为我很清楚我要尝试做什么 - 如果提供了查询参数,我想使用where
过滤器进行查询,如果没有,那么我就不会&# 39;吨。必须有更好的方法来写这个......
答案 0 :(得分:2)
使用querymen可以实现非常好的方法。
var querymen = require('querymen')
app.use('/', querymen.middleware({
questionid: mongoose.Types.ObjectId,
sort: '-created'
}))
app.get('/', function(req, res) {
console.log(req.querymen) // {query: {questionid: <ObjectId>}, cursor: {sort: {created: -1}}}
Answer.find(req.querymen.query, null, req.querymen.cursor)
.populate('creator', 'username')
.exec(function(err, answers) {
if (err) {
res.json(500, err);
} else {
res.json(answers);
}
})
})
答案 1 :(得分:1)
您可以稍微拆分您的调用链,以便只包含您需要的部分:
exports.all = function(req, res) {
var query = Answer.find().sort('-created').populate('creator', 'username');
if(req.query.questionid) {
query = query.where('questionid', req.query.questionid);
}
query.exec(function(err, answers) {
if (err) {
res.json(500, err);
} else {
res.json(answers);
}
});
};