Nodejs api根据查询字符串值加载数据

时间:2017-09-11 12:47:09

标签: javascript angularjs node.js mongodb mongoose

作为初学者,我正在使用MEAN堆栈技术构建一个简单的站点。我有一个api,它根据oject _id获取测验数据对象。一切正常。我想要做的是,根据我的网址http://localhost:3000/viewQuiz?gpQ=59b2ac3cfc2283480879025c中的查询字符串值,我希望api加载数据而不是硬编码,如下所示。我在这里做的不同之处是我有一个/viewQuiz的路由设置,而api url是/api/getQuizData。因此,当我加载http://localhost:3000/viewQuiz?gpQ=xxxxxx时,我希望api获取正确的数据。请参阅下面的代码

Server.js

//Routes
app.get('/startCampaign', function(req, res){
        res.sendFile(__dirname + '/public/views/start-campaign.html');
});

//Get data
var Quiz = mongoose.model('Quiz', quizSchema);
var ObjectId = require('mongodb').ObjectID;

app.get('/api/getQuizData', function(req, res){
    Quiz.find({_id:ObjectId("59b2ac3cfc2283480879025c")}, function(err, quiz) {
      if (err) throw err;

      // object of the user
      res.json(quiz[0]);
    });
});

Angular bit ..

//Get Quiz data
$scope.quizData = '';
$http.get('/api/getQuizData')
.success(function(data) {
    console.log(data);
  $scope.quizData = data;
})

然后我使用这个AngularJs QuizData绑定来显示数据。如何根据查询字符串值更改server.js文件以使其动态化?

1 个答案:

答案 0 :(得分:0)

在角度尝试这个 //req.query由GPQ值组成,并根据gpq =“xyz ......”后发送的内容动态变化。

Quiz.findById(req.query.gPQ, function(err, quiz) {
  if (err) throw err;

  // object of the user
  res.json(quiz);
});