2013-07-24 1 views
0

PostgIS 2.0과 함께 websockets, nodejs v0.10.12 및 PostgreSQL 9.1을 사용하고 있습니다. 이제 websockets에서 서버 측에서 텍스트 데이터를 수집하고 클라이언트로 보내려면 노드의 pg 플러그인을 사용하여 쿼리를 수행합니다. 나는 지금날짜 변경 - postgreSQL 및 웹 소켓

var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja) 
//send them and render in client as html 
query.on("row", function (row, result) {result.addRow(row);}); 

query.on("end", function (result) { 
    for (var i=0; i<result.rows.length; i++){ 
      connection.send(
         'Name</br>' 
         +result.rows[i].p_name+ 
         '</br>Date</br>' 
         +result.rows[i].p_date+ 
         '</br>' 
         } 

     client.end(); 
}); 

같은 것을 가지고, 여기에 까다로운 부분이다. 나는 25/02/2012 같은 날짜를 렌더링하고 싶습니다. 위의 코드와 , 나는이 분명히 PHP 내가이 WebSocket을 작동하기 때문에 자바 스크립트를 사용하고 내가

SET datestyle = "SQL, DMY"; 

같은 코드의 라인을 넣어 가지고 Sat Feb 02 2002 02:00:00 GMT+0200 (Χειμερινή ώρα GTB) 이 DD/MM/YYYY를 얻으려면 얻을. 내가 생각할 수

유일한 것은 내가 오류를 얻을 해달라고 그래서

var query = client.query('SET datestyle = "SQL, DMY"; SELECT p_name,p_date FROM pins WHERE p_id ='+ja) 

처럼 위의 쿼리를 편집하고 있지만, 클라이언트의 날짜가 null를 렌더링합니다.

어떻게 해결할 수 있습니까?

감사합니다.

+0

애플리케이션의 가장자리 (즉, 최종 디스플레이)를 제외하고 어디서나 ISO 8601 형식으로 작업하지 않는 이유가 있습니까? –

+0

@muistooshort 만약''var query = client.query ('SET datestyle = "ISO, DMY"를 선택하면 p_p_id는 p_id ='+ ja 인 핀을 선택하십시오. '나는 여전히'Sat Feb 02 2002 2002 02:00 : DD/MM/YYYY와 같은 것이 아닙니다. – slevin

답변

2

정상입니다. 어디서 시작하나요?

이 :

var query = client.query('SELECT p_name,p_date FROM pins WHERE p_id ='+ja) 

는 쿼리를 작성하는 올바른 방법이 아닙니다. 매개 변수화 된 쿼리를 사용하고 SQL 주입으로부터 자신을 보호하십시오.

SET datestyle = "SQL, DMY";

이 분명히 PHP 내가이 WebSocket을 작업 때문에 자바 스크립트를 사용하고 있습니다.

무엇? 나는이 문장에 대해 건설적인 것을 생각하려고 노력하고있다. 그러나 내가 생각할 수있는 최선은 "무엇"이라고 생각할 수있다. 위와 같은 것이 PHP이기 때문에 멀리 떨어져 있습니다. 데이터베이스에 전송한다는 사실은 SQL이라는 힌트를 제공해야합니다. 또한 웹 소켓으로 작업하기 때문에 자바 스크립트를 사용하지 않습니다. 자바 스크립트를 사용하고 있기 때문에 자바 스크립트를 사용하고 있습니다. 웹 소켓은 여기서 아무 것도하지 않습니다.

내가 생각할 수있는 유일한 것은

...

은 매뉴얼을보고는 포함되지 않습니다.

PostgreSQL 웹 사이트로 이동하여 설명서 및 설명서를 클릭하고 내용 페이지에서 "함수 및 연산자"를 클릭 한 다음 "데이터 형식 서식 기능"을 클릭하십시오. 여기에 대한 링크입니다 :

http://www.postgresql.org/docs/current/static/functions-formatting.html

당신은 PostgreSQL의 개발자가 광범위하고 상세한 매뉴얼을 생산뿐만 아니라 것을 알 수 있습니다,하지만 그들은 온라인으로 여러 버전을 유지하고 간단 다시 전환하고 앞이 무엇을보고 변경되었습니다.

각 효과의 명확한 설명과 함께 다양한 방법으로 날짜와 시간의 형식을 지정하는 방법에 대한 전체 섹션이 있습니다. 나는 문서 검색이나 영리한 것을 사용하여 이것을 찾지 못했습니다 - 각 페이지의 명백한 링크.

검색을 수행 한 경우 datestyle 매개 변수를 많이 사용하게되며, 조금 더 자세히 살펴보면 특정 사용자 또는 데이터베이스의 세션 또는 기본값으로 설정할 수 있음을 알 수 있습니다.

마지막으로, 그렇게하지 마십시오. @mu와 같은 ISO 표준 날짜 형식이 반환됩니다 (YYYY-MM-DD 등). 자바 스크립트 클라이언트 코드에서 형식을 지정하십시오.

오 - 전문가가 아니지만 </br>이 유효한 HTML, XHTML 또는 XML인지는 확실하지 않습니다. 아마도 <br/>을 의미 했습니까?

+0

'ja' var을 포함하도록 쿼리를 편집합니다. id int를 나타내는 동적으로 변경되기 때문에, 어떤 점에서 reffering할까요? 사용자가지도를 클릭했습니다. AFAIK 및 IMHO 간단한 마우스 클릭만으로 SQL 주입을 얻을 수 없기 때문에 매개 변수화 된 쿼리를 사용해야하지 않습니다. 좋아,'SET datastyle ... '그것의 SQL, 어쨌든 나는 그것의 Javascript가 아니다. 또한 웹 소켓과 노드 때문에 Javascript를 사용합니다. 나는 노드를 사용하고 있다고 언급했다. – slevin

+0

그 링크를 보았습니다. 나는 (var i = 0; i 날짜
' + formaDate + '
'내가 가진 가'defined'되지 TO_CHAR가. 내가 말하는거야 모든 내가 질문을하기 전에 몇 돼고을 시도한다는 것입니다, ** 기분 나쁘게 ** 그러나 귀하의 anser 선생님, 게으른 부두 - 코더처럼 보이게 .... – slevin

+0

1. 물론 웹 인터페이스를 통해 SQL 주입을 얻을 수 있습니다. 제공되는 데이터에 의존하지 마십시오 - 매개 변수화 된 쿼리 사용 2. to_char() 함수는 SQL 함수로, postgresql.org 사이트에 있다는 것을 알면 알 수 있습니다. 3. 내 대답으로 인해 게으른 것처럼 보이지 않습니다. 질문입니다. –