2014-01-28 3 views
-1

노드 및 익스프레스 사용. 배열에 모든 request 데이터를 저장 한 다음 배열의 각 항목을 몽고 컬렉션에 삽입하는 방법은 무엇입니까?Node.js : 폼에서 데이터 추출 및 Mongo db에 제출

내 노선은 현재이 같은 설정입니다 : app.post("/addbulletin", routes.addbulletin(db));

내가보기를 처리하는 등 같은 데이터 처리 해요 :

exports.addbulletin = function(db) { 
    return function(req, res) { 

    // Get our form values. These rely on the "name" attributes 
    var date = req.body.date, 
     name = req.body.name; 
     // and many more... 

    // Submit to the DB 
    collection.insert({ 
     "date" : date, 
     "name" : name 
     // and many more... 
    }, function (err, data) { 
     if (err) { 
     res.send("There was a problem adding the information to the database."); 
     } 
     else { 
     res.location("index"); 
     res.redirect("/"); 
     } 
    }); 

    } 
} 

이 방법의 문제는 내가 모두 알고 있어야한다는 것입니다을 데이터베이스에 전송해야하는 항목 중 데이터를 가져올 페이지의 필드를 모르는 경우에는 어떻게해야합니까? 사용자 선택을 기반으로 입력을 채우는 양식이 있기 때문에 현재 내가 현재있는 상황입니다. 그래서 모든 가능한 변수를 하나의 변수에 넣을 필요가 없습니다. req.body.whatever. 대신 예를 들어 req.body.all이라고 말하고 변수에 제출 된 데이터 만 저장 한 다음 데이터베이스에 입력하여 각 필드의 이름도 추출합니다.

답변

1

직접 MongoDB를 위해 req.body을 저장할 수 있습니다

// Submit to the DB 
collection.insert(req.body, function (err, data) { 
    if (err) { 
    res.send("There was a problem adding the information to the database."); 
    } 
    else { 
    res.location("index"); 
    res.redirect("/"); 
    } 
}); 

는 그냥 req.body 개체를 유지. _id과 같은 일부 속성을 필터링 (삭제)하는 것이 좋습니다.

delete req.body.__id 
+0

오, 감사합니다. 호기심이긴하지만, 이드를 삭제하고 싶은 이유가 있을까요? –

+0

악의적 인 사용자가 특정 상황에서 기존 문서를 변경할 수있는 데이터를 처리기에 게시하지 않도록 '_id' 필드를 삭제할 수 있습니다. – saintedlama

관련 문제