2012-09-01 4 views
0

임마 doint 일부 노드 j는 wordpress의 blogposts 및 해당 게시물의 위치 정보 태그 지정을 수행합니다. 나는 nodejs에 geolite를 통합했고 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); 
    } 
); 

위에서 볼 수 있듯이 위도/경도는 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

내가 작동이 솔루션에 결국 .. :-) 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 ('통지', 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)); 
    } 
);