如何使用NodeJsstream过滤JSon文件
我正在使用Node.JSstream来parsingJSON文件并将其绘制在地图上。 我有两个文件:前端绘制数据的地方
'/points.geojson'
服务器端:1-我加载外部文件(output.json)。
var fs = require('fs'); app.get('/points.json', function(req, res) { res.setHeader('Content-Type', 'application/json'); fs.createReadStream(__dirname + '/output.json').pipe(res); });
2-现在我想过滤这些数据
我有三个select来做到这一点
1-在客户端:我不知道是否应该使用Angular-JS过滤,或纯JS使用这个库Filter.JS
我有一个非常大的文件(100MB)。 所以,我们来考虑这个例子:
[ {'name': 'Apple', 'colour': 'Red'}, {'name': 'Orange', 'colour': 'Orange'}, {'name': 'Banana', 'colour': 'Yellow'}]
http://jsfiddle.net/65Pyj/
比方说,我想select所有与绿色的点
var output = arr.filter(function(x){return x.colour =="green"});
2 – 在服务器端我的问题,我想过滤服务器端的JSON数据,所以我不加载和重新加载数据(因为它很大)。 我应该过滤Node.Js上的数据。
当我checkbox“绿色”,我想过滤数据。 然后使用上述脚本重新加载它。
我读了expression式3,我们可以直接使用res.json({color:'green'}) http://expressjs.com/api.html#res.json
但是,我怎样才能让它监听客户端的事件(checkbox),然后重新加载jsonfile。
任何想法我怎么能做到这一点? 我正在使用Node.Js / express
为了过滤服务器端而不加载和一次parsing整个文件,你可以看看这些模块可以parsingJSONstream(文件或其他):
- JSONStream
- oboejs
- 单簧pipe – 这个界面比上面两个界面低得多