在节点中的GET请求之后从mongolab获取空JSON

时间:2015-12-08 15:05:03

标签: javascript angularjs json node.js mongodb

我的问题:我正在尝试从我的数据库中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;
    });
});

我正在使用POSTMANlocalhost:3000/getrandomquestion提出HTTP.GET请求,我正按照我的说法回复""

任何帮助解决我的问题(空JSON而不是真正的JSON)都将非常感谢

1 个答案:

答案 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。