2016-07-24 111 views
0

我有以下:传递JSON对象在HTTP请求

路线文件 “prontuarios.js”:

 module.exports = function(app){   
     getProntuarios = function(request, response, next){ 
      var sqlCustom = request.query; 
      var connection = app.infra.connectionFactory(); 
      var prontuariosDAO = new app.infra.ProntuariosDAO(connection); 
      prontuariosDAO.lista(sqlCustom, function(erros, resultados){    
       if(erros){ 
        return next(erros); 
       } 
       response.format({ 
        json: function(){ 
         response.json(resultados); 
        } 
       }); 
      }); 
      connection.end();  
     } 

     app.route('/v1/prontuarios') 
      .get(getProntuarios); 
... 

和DAO文件 “ProntuariosDAO.js”

... 
ProntuariosDAO.prototype.lista = function(sqlCustom, callback){ 
    var _sqlCustom; 
    console.log(`sqlCustom ${sqlCustom}`);  
    if (sqlCustom){ 
     _sqlCustom = sqlCustom; 
    } 
... 

当我打电话prontuariosDAO.lista函数,我希望通过“sqlCustom”参数,但问题是“sqlCustom”必须是函数ProntuariosDAO.prototype.lista中的JSON对象。但是它没有发生,sqlCustom参数变得像这样的字符串:

{ 
    limit: '10', 
    offset: '2', 
    orderBy: '{"field":"nome","type":"desc"}', 
    whereAnd: 
     [ 
     '{"field":"id","operator":"<","value":"300"}', 
     '{"field":"nome","operator":"like","value":"jo%"}' 
     ] 
} 

我已经使用JSON.parse功能尝试,但因为它是解析orderBywhereAnd像一个字符串它没有正确工作。

这是一种在JSON中转换该字符串的方法吗?我是否正确传递HTTP参数?

回答

0

样子你会需要递归应用JSON.parse来获取数据返回给你:

data = { 
    limit: '10', 
    offset: '2', 
    orderBy: '{"field":"nome","type":"desc"}', 
    whereAnd: 
     [ 
     '{"field":"id","operator":"<","value":"300"}', 
     '{"field":"nome","operator":"like","value":"jo%"}' 
     ] 
} 
JSON.parse(data.orderBy)