2016-07-16 13 views
1

私はJSON-QueryというNPMのモジュールで遊んでいましたが、もともと私のJSに埋め込まれたJSONを使用してモジュールを機能させることができました。非同期クエリJSONオブジェクト

私は約2日間、外部とJSONファイルにあるJSONのクエリを実行しようとしました。

機能していた元のコードは、このように見えました。

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"} 
      ] 
} 

私はに走ってきた問題、機能はQueryDBは()に関係なく、JSONを照会するための場所にあるもの、私は私を見つける応答がない、走っているとき、私は、もうJSONを照会することができませんキー。

現在、私は、JSONファイルを照会しようとしたとき、私は、サーバーから取得する応答が豊富に明確にするため

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

で、私が演じてきた、私の問題は、私が遊びに私のオブジェクトを呼び出す方法であると考えていますJSON-Queryの構造を使用して、キーを分離することができませんでした。

この上の任意のヘルプは素晴らしいだろう、私が働いているモジュールは、[NPM] https://www.npmjs.com/package/json-query

でNPMに見つけることができる私は、これは単なるタイプミスだと思うあなた

答えて

2

ありがとうございます。すべきではない:

obj: obj 

これはこれですか?

data: obj 
+0

This Worked!このコード行はどのような機能を果たしますか?私はobjがJSONの解析から来ていることを理解しています、データです:関数は何を返答していますか? –

+1

'data'は配列のキーです。 '{data:obj}'は、キーとして '' data''、値として 'obj'を持つ配列があることを意味します。呼び出す関数は '' data ''というキーがあると予想しますので、それを使う必要があります。 – smarx

関連する問題