2012-09-01 91 views
0

我做了一些nodejs擺弄WordPresspress的blogposts和地理標籤的帖子。我已經將geolite集成到nodejs中,並且從wordpress獲取客戶端ID。這裏是我的nodejs代碼現在的樣子。nodejs合併數組

native.on('data', 
    function(data) 
    { 
    //console.log(data) 
    listener.sockets.emit('notification', data); 
    jsonstring = JSON.parse(data) 
    var ip = jsonstring.clientip 
    var geo = geoip.lookup(ip); 
    console.log(ip); 
    console.log(geo); 
    listener.sockets.emit('geodata', geo); 
    } 
); 

正如你可以看到lat/long是從json編碼的數據發送到套接字。

我想將緯度/長度合併爲「數據」併發送爲1個對象。我不知道如何做到這一點。我希望有人能幫助我解決這個問題。

回答

1

在Expando /特設財產或兩個就足夠了:

listener.sockets.emit('notification', data); 
jsonstring = JSON.parse(data) 
var ip = jsonstring.clientip 
var geo = geoip.lookup(ip); 
jsonstring.geo = geo; 
// or 
jsonstring.lat = geo.lat; 
jsonstring.lng = geo.lng; 
+0

這似乎工作,但我需要再次將jsonstring編碼到json中,然後再發送到套接字。將數據添加到數組後,我如何執行json編碼? –

+0

我結束了這個解決方案,工程.. THX的幫忙:-) native.on( '數據', 功能(數據) { jsonstring = JSON.parse(數據) VAR IP = jsonstring。 clientip VAR地理= geoip.lookup(IP); jsonstring.lat = geo.ll [0]; jsonstring.lng = geo.ll [1]; jsondata = JSON.stringify(jsonstring); listener.sockets .emit('notification',jsondata); console.log(jsondata); } ); native.on('end', function(){ } ); } –

0

添加geo信息爲您解析數據對象的另一個屬性發射前:

native.on('data', 
    function(data) 
    { 
    var obj = JSON.parse(data) 
    obj.geo = geoip.lookup(obj.ip); 
    listener.sockets.emit('notification', JSON.stringify(obj)); 
    } 
);