2014-12-11 4 views
0

소켓을 통해 게시 메시지를 브로드 캐스팅해야하는 작은 Node.js 웹 앱이 있습니다. 여기서 가장 큰 문제는 게시물의 req.body 부분이 Object 유형이라는 점입니다. 당신은 단지 "개체"를 참조하므로 있으며, toString() 함수를 통해 변환 만, 유형 이름을 변환합니다Node.js req.body 소켓 쓰기

req.body.toString() 
"[object Object]" 

죄수가 dict.js 사전이다. 아주 좋은데. 소켓은 문제의 가치 부분에 있습니다. 여기에 우편 번호

:

router.post('/message', function (req, res) { 
    con.forEach(function (value, key) { 
     if (key != user) { 
      debug("BROADCAST: " + user + " -> " + key); 
      value.write(req.body); 
     } 
    }); 
    var answer = "[{\"urls\":\"here_be_dragons"}]"; 
    res.send(answer); 
}); 

나는 또한 bodyParser을 시도했지만 아마 (내가 router.use를 설정할 때, bodyParser 그것을해야하지만 대해서 typeof (req.body는) 항상 ("개체"를 반환합니다. 텍스트())) :

typeof(req.body) 
"object" 

또한 req.body 개체의 정보가 정확한지 확인할 수 있습니다.

제 질문은 : req.body를 올바른 정보로 문자열 유형으로 가져올 수 있습니까?

+0

dist.js를? 당신이 물건을 의미합니까? –

+0

실제로는 [dict.js]입니다 (https://www.npmjs.com/package/dict). 나는 단지 객체 이름 "con"이 무엇인지 명확히하고 싶었다. – gpm

답변

0

대신 JSON 표현이 필요하다고 생각합니다. 이를 위해 다음을 할 수 있습니다 : JSON.stringify(req.body);

+0

이미 시도해 보았습니다. 뭔가 이상한 일이 발생합니다 : 결과 메시지는 req.body의 객체가 JSON의 핵심 부분에 삽입 된 JSON입니다. 매우 이상합니다. – gpm

+0

그럴 경우 요청에 잘못된 'Content-Type'을 사용하고있는 것입니다. 요청 데이터에 JSON이 있지만 요청에 'Content-Type : application/x-www-form-urlencoded'이 포함되어있을 것입니다. – mscdex

1

나는 쿼리 문자열 모듈로 해결했습니다!

var qs = require('querystring'); 

캐릭터 라인 화 및 언 이스케이프 방법은 나를 위해 일한 :

value.write(qs.unescape(qs.stringify(req.body)));