我的问题:我正在尝试从我的数据库中HTTP.GET
随机 questionSchema
,但它会返回""
。
在我的数据库中(托管在mongolab中)我有几个不同的集合,但在我的问题集中,我只有3个不同的JSON和3个不同的questions。
我的Schema
看起来像这样:
var questionSchema = new Schema({
description: String
});
module.exports = mongoose.model('Question', questionSchema);
在我的routes.js
中,我提出以下内容:
app.get('/api/getrandomquestion', function (req, res) {
if (req.params.description) {
res.json(req.description);
} else {
res.json("");
}
});
我还有一个名为QuestionService.js
的服务,该服务应该查询数据库,并从所有(3)存在的文档中返回随机 JSON文档。这是服务的代码:
var numberOfItemsToFind = 3;
Question.find({}, { '_id': 1}, function(err, data){
if (err) res.send(err);
var arr = shuffle.(data.slice(0));
arr.splice(numberOfItemsToFind, arr.length - numberOfItemsToFind);
var return_arr = [];
async.each(arr, function(item, callback){
Question.findById(item._id, function(err, data){
if (err) res.send(err);
return_arr.push(data);
callback();
});
}, function(err){
res.json(return_arr);
});
});
最后,我将这些与我的questionCtrl
:
controller('QuestionCtrl', function ($scope, $http, $modal) {
$http.get('/api/getrandomquestion').success(function (question) {
$scope.description = question.description;
});
});
我正在使用POSTMAN向localhost:3000/getrandomquestion提出HTTP.GET
请求,我正按照我的说法回复""
。
任何帮助解决我的问题(空JSON而不是真正的JSON)都将非常感谢!
答案 0 :(得分:2)
问题出在您的routes.js
:
app.get('/api/getrandomquestion', function (req, res) {
if (req.params.description) {
res.json(req.description);
} else {
res.json("");
}
});
req.params.description
未定义。所以if语句失败了。
如果不需要参数description
,您应该像这样定义GET
API:
app.get('/api/getrandomquestion', function (req, res) {
QuestionService.getRandomQuestion(function(questions){
res.json(questions);
//res.send(questions);
});
});
基本上您的后端会收到GET getrandomquestions
API调用,您只需使用QuestionService
转发来获取MongoDB。