将userid添加到下一个json文件

时间:2016-02-23 03:40:31

标签: javascript json ibm-cloud

不幸的是我对json docs并不熟悉,所以我有一些问题要附加或连接一些数据。
我有一些代码进入网站,在授权后返回用户数据。下面的代码将通过json doc将用户信息插入到cloudant数据库中,然后获取关联的用户dir数据并以json格式插入数据库。不幸的是,dir数据不包含userid所以我相信我需要将它添加到json doc中,以便我可以通过dashdb在报告中显示用户id和dir数据。

// On return with the authorization code now available
app.get('/oauth_callback', function(req, res) {
  var code = req.query.code;
  request("https://deviceurl/?client_id=1234&client_secret=678&grant_type=authorization_code&redirect_uri=https://myurl/oauth_callback&code=" + code, function(error, response, body) {
    if (!error && response.statusCode == 200) {
      var jsonObject = JSON.parse(body);
      var access_token = jsonObject.AccessToken;
      var user_id = jsonObject.UserID;
      // use the returned userid and access token to get the users profile data in json format
      request("https://deviceurl/user/" + user_id + ".json/?client_id=1234&client_secret=678&redirect_uri=https://myurl/oauth_callback&access_token=" + access_token + "&some other tokens", function(error, response, body) {
        if (!error && response.statusCode == 200) {
          var usrinf = JSON.parse(body);
          //inserts into my cloudant database 1 json doc
          mydb.insert({
            'User_Info': (body)
          });
          console.log(body);
          res.send(body); // send raw data back to web page just to show its working
        }
        //while the access token is still active get some dir data
        request("https://deviceurl/user/" + user_id + "/dir.json/?client_id=1234&client_secret=678&redirect_uri=https://myurl/oauth_callback&access_token=" + access_token + "&some other tokens", function(error, response, body) {
            var dirinf = JSON.parse(body);
            if (!error && response.statusCode == 200) {
              //inserts in cloudant dir data but need to include id so I know the user
              mydb.insert({
                'DIR': (dirinf) + ’‘+(user_id)
              });
              console.log(body);
              // res.send(body); // not doing this as not necessary
            } else {
              res.send("Error in Dir request");
            }
          })
          //else{
          //    res.send("Error in UsInf request");
          // }
      })
    } else {
      res.send("error in authorise token request")
    }
  })
});

由于user_id在var中我以为我可以直接解决它,但这似乎不起作用。提前谢谢。

1 个答案:

答案 0 :(得分:0)

感谢那支团队。昨晚我做了一些研究,发现一旦我得到了JSON概念,我就不会很难将url中的user_id添加为JSON输出中的附加行。一旦我将JSON主体分配给变量,我就可以添加另一个元素并将user_id分配给它。 所以代码片段看起来像这样。

 function (error, response, body) {
                            //assign the JSON body to a variable
                            var dirinf=JSON.parse(body);
                            //add an element for userid and add the user_id
                            dirinf["userid"]=user_id;

再次感谢。