2016-07-16 2 views
1

NPON의 JSON-Query 모듈을 가지고 놀았으며, 원래 js에 JSON이 포함 된 모듈 함수를 만들 수있었습니다.비동기 쿼리 JSON 객체

외부 및 JSON 파일에있는 JSON을 쿼리하는 데 약 2 일을 보냈습니다.

원래 작동하던 코드는 다음과 같습니다.

var jsonQuery = require('json-query') 
var data = { 
    people: [ 
    {name: 'Matt', country: 'NZ'}, 
    {name: 'Pete', country: 'AU'}, 
    {name: 'Mikey', country: 'NZ'} 
    ] 
} 

jsonQuery('people[country=NZ].name', { 
    data: data 
}) //=> {value: 'Matt', parents: [...], key: 0} ... etc 

내가 찾고있는 키를 찾기 위해 내부 JSON을 쿼리 할 수있었습니다.

코드가 실행되는 동안 JSON을 업데이트해야한다는 것을 알았 기 때문에 JSON을 자체 파일로 옮겼습니다.

현재 내 메인 JS 파일은 다음과 같습니다.

var jsonQuery = require('json-query'); 
var fs = require('fs'); 

function querydb(netdomain){ 
fs.readFile('./querykeys.json', 'utf8', function (err, data) { 
    if (err){console.log('error');} 
    var obj = JSON.parse(data); 

    console.log(jsonQuery('servers[netshare=Dacie2015].netdomain', { 
      obj: obj 
     })); 



}); 
} 

querydb(); 

json을 포함하는 내 JSON 파일은 다음과 같습니다.

{ 
      "servers": [ 
      {"netdomain": "google.com", "netshare": "password", "authip":"216.58.203.46"}, 
      {"netdomain": "localhost", "netshare": "localghost", "authip":"127.0.0.1"}, 
      {"netdomain": "facebook.com", "netshare": "timeline", "authip":"31.13.69.228"} 
      ] 
} 

나는 우연히 한 문제, I 함수 QueryDB()가 실행 된 경우에 상관없이 JSON을 조회 할 수있는 장소에 무엇인지, 더 이상 JSON을 조회하지 드릴 수 없습니다, 난 내 위치를 응답을 얻을 키.

은 현재 내가 JSON 파일을 조회하려고 할 때 서버에서 얻을 응답이

{ value: null, 
    key: 'netdomain', 
    references: [], 
    parents: [ { key: 'servers', value: null }, { key: null, value: null } ] } 

이 풍부하게 명확하게하는 것입니다, 난 내 문제는 내가 플레이로 내 개체를 호출하는 방식이라고 생각, 내가 연주 한 JSON-Query의 구조와 비교하여 키를 분리 할 수 ​​없었습니다.

이에 어떤 도움이 놀라운 것, 내가

https://www.npmjs.com/package/json-query [NPM]에서 NPM에서 찾을 수 있습니다 함께 일하고 모듈 내가이 그냥 오타라고 생각하면

답변

2

감사드립니다. 하지 말아야 할 내용 :

obj: obj 

data: obj 
+0

This Worked! 이 코드 라인은 무엇으로 기능합니까? obj는 JSON의 구문 분석에서 비롯된 것으로 이해합니다. 데이터는 무엇입니까? 함수가 응답하는 대상은 무엇입니까? –

+1

'data'는 배열의 키입니다. '{data : obj}'는 키로''data''가 있고 값으로'obj'가있는 배열을 의미합니다. 당신이 부르는 함수는''data ''라는 키가있을 것으로 기대하기 때문에 그것을 사용해야합니다. – smarx