2016-07-16 102 views
1

我一直在玩一個名爲JSON-Query的NPM模塊,我最初可以使用嵌入在我的js中的JSON創建模塊函數。異步查詢JSON對象

我花了大約兩天試圖讓它查詢外部和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"} 
      ] 
} 

我已經遇到了這個問題,我無法再查詢JSON,當函數QueryDB()是跑了,不管是什麼查詢JSON的地方,我沒有得到任何迴應定位我鍵。

目前我從服務器獲取當我嘗試查詢JSON文件的響應

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

要非常清楚,我相信我的問題是,我把我的目標發揮作用的方式,我都玩過與JSON-Query的結構並無法完成能夠隔離密鑰。

任何幫助將是驚人的,說我有可能在NPM在[NPM] https://www.npmjs.com/package/json-query

找到工作模塊謝謝

回答

2

我認爲這只是一個錯字。不應該這樣:

obj: obj 

是這個嗎?

data: obj 
+0

This Worked!這行代碼的功能是什麼?我明白obj來自JSON的解析,是數據:函數的迴應是什麼? –

+1

數據是數組中的關鍵。 '{data:obj}'表示有一個數組,其中''data「作爲鍵,'obj'作爲值。你所調用的函數期望有一個叫做「data」的鍵,所以你需要使用它。 – smarx