返回响应时无法获取错误

时间:2014-05-30 07:13:56

标签: json node.js express

我正在使用node.jsfbgraph api和express框架创建脚本。我从nodejs服务器上的页面access_token发送用户index.html。我能够检索access_token并使用fbgraph api来检索更多用户信息。但是当我尝试发送响应Json对象时,我收到此错误Cannot GET /。 这是我的代码,我无法理解问题出在哪里,一切似乎都有效。我也检查了其他问题,它们对我的情况没有帮助,我不需要显示任何模板。我只想回复。

注意:在我的项目文件夹文件结构中,如下所示: -

node_modules
app.js
package.json

代码:app.js

var bodyParser = require('body-parser');
var express = require('express');
var graph = require('fbgraph');
var app = express();





    app.use(bodyParser());
//Retrieve POST data
    app.post('/', function(req, res) {
        // console.log(req.body.access_token);
        var access_token = req.body.access_token;
        //set access token
        graph.setAccessToken(access_token);
        //Graph Api request
        graph.get("/me?access_token="+access_token, function(err, b_res) {
           // console.log(b_res)
            var name = b_res.name;
            var id = b_res.id;
            var profileUrl = b_res.link;
            //Retrieve profile url
            graph.get("/"+id+"/?fields=picture", function(err, g_res) {
                //JSON object to be returned
                var userObj = {
                    "name": name,
                    "id": id,
                    "profilerl": profileUrl,
                    "picurl": g_res.picture.data.url
                };
                console.log(userObj);
                res.json(userObj);
                  //res.send(userObj);
            });
        });

    });
app.use(express.static(__dirname + '/'));

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'));

1 个答案:

答案 0 :(得分:0)

正如上面的注释中所讨论的,您可以使用where子句中的userObj属性或您想要的任何其他操作在同一页面中执行db操作,然后在视图中传递db返回的对象,如下所示

var bodyParser = require('body-parser');
var express = require('express');
var graph = require('fbgraph');
var app = express();





app.use(bodyParser());
//Retrieve POST data
app.post('/', function(req, res) {
    // console.log(req.body.access_token);
    var access_token = req.body.access_token;
    //set access token
    graph.setAccessToken(access_token);
    //Graph Api request
    graph.get("/me?access_token="+access_token, function(err, b_res) {
       // console.log(b_res)
        var name = b_res.name;
        var id = b_res.id;
        var profileUrl = b_res.link;
        //Retrieve profile url
        graph.get("/"+id+"/?fields=picture", function(err, g_res) {
            //JSON object to be returned
            var userObj = {
                "name": name,
                "id": id,
                "profilerl": profileUrl,
                "picurl": g_res.picture.data.url
            };
            console.log(userObj);
              //res.json(userObj);
              //res.send(userObj);

            //perform db operation using userObj and when you get the returned object from db pass it to the view. Let say dataAfterDbOpeations is the returned object of ur query

            res.render('views/index', {data: dataAfterDbOpeations})

        });
    });

});
app.use(express.static(__dirname + '/'));

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'));