2014-02-12 4 views
0

html 전자 메일에 양식 게시/검토 제출 된 양식의 데이터는 양식의 입력 필드에서 가져온 것입니다.nodejs에서 양식 데이터 추출하기

req.body를 사용하여 다음과 같은 양식 데이터를 가져옵니다.

{ 
    customer_id: '52fa6ded48e3a50000000007', 
    shop_name: 'sage-arts', 

    'product-226039457-emotion': 'sucks', 
    'product-226039457-comment': '1', 

    'product-222924077-emotion': 'rocks', 
    'product-222924077-comment': '12', 

    'submit-review': 'Submit your review' 
} 

product-...-emotionproduct-...-comment쌍는 상기 경우에 하나 이상의 2가 될 수있다. 몇 쌍이 있더라도 쌍을 추출하여 처리해야합니다.

저는 customer_idshop_name이 항상 같기 때문에 다음과 같은 것을 알았습니다.

var shop = form['shop_name']; 
var customer = form['customer_id']; 

그러나 나머지는 예측할 수없는 키가 있습니다. 나는

form[2]; 

을 시도하지만 undefined

를 얻을 내가 뭘 사전에 키를 알고없이 필요한 데이터를 추출 할 수있는 좋은 방법이 될 것입니다?

+0

그냥 루프와 키가 일치하는지 여부를 테스트하려면 '제품 - \ d + - (감정 | 의견)'패턴? – Bergi

+0

Object.keys (양식) –

+1

을 통해 양식 개체의 속성 목록을 얻을 수 있습니다. 지금 바로 사용해 보았습니다. 나는 두 가지 메 토스 Object.keys (form)을 사용하여 모든 키의 배열을 얻었고, (key in form) 시도하여 모든 키를 반복 할 수있었습니다. 다시 한 번 감사합니다 –

답변

1

당신은 객체를 반복하고 일부 일치를해야 할 것 : 나는 당신이 제품 ID에 의해 키가되는 객체가 수 있도록이 데이터를 변환하는 데 도움이 될 것 같은데요

for(var field in req.body){ 
    if(field.match(/^product-\d+-emotion$/)){ 
     // do something with req.body[field] 
    } 
    if(field.match(/^product-\d+-comment$/)){ 
     // do something with req.body[field] 
    } 
} 

. 당신이 뭔가를 할 수 있습니다 : 당신의 필드 형태 product-99999-something 항상 경우

var products = {}; 
for(var field in req.body){ 
    var m; 
    m = field.match(/^product-(\d+)-emotion$/); 
    if(m) { 
     var id = m[1]; 
     if(!products[id]) products[id] = {}; 
     products[id].emotion = req.body[field]; 
     continue; 
    } 
    m = field.match(/^product-(\d+)-comment$/); 
    if(m) { 
     var id = m[1]; 
     if(!products[id]) products[id] = {}; 
     products[id].comment = req.body[field]; 
     continue; 
    } 
} 

,이 훨씬 더 일반적인 만들 수 : 객체를 통해

var products = {}; 
for(var field in req.body){ 
    var m; 
    m = field.match(/^product-(\d+)-(\w+)$/); 
    if(m) { 
     var id = m[1]; 
     var prop = m[2]; 
     if(!products[id]) products[id] = {}; 
     products[id][prop] = req.body[field]; 
    } 
} 
+0

감사합니다, 이것은 대단합니다 :) –