2016-11-20 63 views
1

我正在開發一個利用MongoDB來存儲大量數據集的NodeJs應用程序。數據使用「.find」或「.findOne」查詢功能進行檢索。NodeJs MongoDb沒有獲取者和設置者的結果

const collection = db.collection('recordings'); 

collection.find({}, {fields: ['header']}).toArray() 
    .then(documents => { 
     console.log(documents); 
     resolve(documents); 
    }) 
    .catch(error => reject(error)); 

的應用是建立使用電子JS,所以我能夠通過Chrome開發者工具來檢查數據:

The console ouput 說完這些getter和setter方法使應用程序相當緩慢。由於該數據是在D3-圖也可見,我想出了這個奇特的解決方案,以消除所有的功能:

JSON.parse(JSON.stringify(documents)) 

沒有這個額外的步驟圖表開始口吃。

有沒有更好的方法來檢索原始結果,而無需循環遍歷所有文檔以去除不必要的getter和setter函數?

謝謝。

+2

不是過於熟悉'mongodb'但我只是試圖複製你的問題。我沒有在我的迴歸中獲得這些'get'和'set'方法,只是一個平面的對象數組。您使用的是什麼版本的mongodb節點客戶端?我試着用2.2.11 ... – Mark

回答

2

問題肯定不在mongo。林還與這條線{fields: ['header']}混淆。

如果你想你需要這樣的查詢

collection.find({}, {'header': 1, _id: 0}).toArray()只是頭字段。

https://docs.mongodb.com/v3.0/tutorial/project-fields-from-query-results/

希望這有助於。

+0

謝謝你的回答。我使用的投影風格只是一種不同的語法。我已經根據官方文件改變了它。 奇怪的「getter」和「setter」問題仍然存在。也許這只是因爲我在Electron渲染器進程中使用Mongo DB而發生的。 –

+0

可能。因爲我從來沒有在Mongo中看到過這種問題。 Btw你用什麼模塊來連接和查詢mongodb? –

+0

它只是簡單的mongodb節點模塊:「mongodb」:「^ 2.2.11」 –

0

我得到了解決以下這篇文章的建議後: https://stackoverflow.com/a/38490959/1292336

如果直接連接的電子渲染過程蒙戈數據庫只出現問題。 您應該使用主進程並使用ipc傳輸每個查詢的結果。

感謝尼古拉Borysyuk和Marc重建問題:)

+0

Np.Glat幫助你。 –

+0

這仍然很奇怪。我的測試是在「渲染」過程中完成的。我只是'