节点js获取状态

时间:2018-09-26 09:47:02

标签: node.js

我这样在节点js中获取数据

var no_ktp = req.body.cust_noktp
request({
   uri : 'https://evodms-dev.client.com/evoDMM/api/api_customer_all.php?cust_noktp='+no_ktp,
   auth: {
      'bearer': '71D55F995678929'
   },
   rejectUnauthorized: false,//add when working with https sites
   requestCert: false,//add when working with https sites
   agent: false,//add when working with https sites

   }, function(error, rows) {
     if (error) {
       console.log(error);
     } else {
       console.log(rows);
     }

 });

日志是这样的

console.log(rows)

但是我想获取状态:false,当我尝试console.log(rows.body.status)时,日志显示未定义。怎么写才能得到状态?

谢谢您的帮助...

2 个答案:

答案 0 :(得分:2)

只有当您的身体是物体时,您才能使用rows.body.status来访问状态!

但是,在日志中,您的对象实际上是一个字符串,因此,您需要首先使用JSON.parse(rows.body)才能将对象字符串转换为实际的javascript对象。然后,您将可以使用常规语法访问任何属性

let body = JSON.parse(rows.body);
console.log(body.status) // 'False'

更新

因此,我刚刚阅读了请求nodejs软件包https://www.npmjs.com/package/request的自述文件 您会看到请求的回调实际上包含3个参数:

(error, response, body)

响应参数是所谓的“行”,因此可以代替使用我的方法(JSON.parse),而可以使用提供给回调函数的第三个参数,而无需解析,可以使用它直接:)

答案 1 :(得分:0)

您的body响应似乎不是JSON格式,而是字符串。您必须通过

将其转换为JSON
var no_ktp = req.body.cust_noktp
request({
   uri : 'https://evodms-dev.client.com/evoDMM/api/api_customer_all.php?cust_noktp='+no_ktp,
   auth: {
      'bearer': '71D55F995678929'
   },
   rejectUnauthorized: false,//add when working with https sites
   requestCert: false,//add when working with https sites
   agent: false,//add when working with https sites

   }, function(error, rows) {
     if (error) {
       console.log(error);
     } else {
       const body = JSON.parse(rows.body); // parse string to JSON
       console.log(body.status);
     }

 });