2011-09-29 5 views
-1

가능한 중복 객체의 배열을 저장하는 방법 : 익스프레스/Node.js를 - 하나 개의 모델 내에서


Mongoose - Form to save model with embedded documents

내가 블로그 게시물 간단한 몽구스 스키마를 가지고 있고 그 안에 포함 된 피드를 BlogPosts. 따라서 각 BlogPost에는 여러 피드 객체가있을 수 있습니다. 지금 내 HTML 양식을 사용하면 BlogPost를 만들 때 '피드'를 올바르게 저장할 수 있지만 많은 피드를 추가 할 수 있기를 원합니다. HTML/컨트롤러를 어떻게 변경해야합니까? 감사합니다!

새로운

app.post('/blogpost/new', function(req, res){ 
    var post = new BlogPost(req.body.post) 
    post.feeds.push(req.body.feed); 
    post.save(function() { 
     res.redirect('/blogposts'); 
    }); 
}); 

/블로그 게시물을/web.js

<form method="post"> 
    <input type="text" name="blogpost[title]"/> 
    <textarea name="feed[name]"></textarea> 
    <textarea name="feed[key]"></textarea> 
    <textarea name="feed[name]"></textarea> 
    <textarea name="feed[key]"></textarea> 
</form> 

나는이 양식 저장 두 블로그 게시물에 '피드'하도록 그것을 어떻게해야합니까 스키마

var Feed = new Schema({ 
    name  : { type: String } 
, key  : { type: String } 
}); 

var BlogPost = new Schema({ 
    title  : { type: String, required: true, index: { unique: true } } 
, feeds  : [Feed] 
}); 

그것을 만드는 대상? 지금은 하나의 피드를 두 개의 이름 값과 두 개의 키 값으로 데이터에 저장합니다.

감사합니다. 이 같은 것을 할 때

+0

이것은 기본적으로 여기 어제 물어 본 질문과 같습니다 : http://stackoverflow.com/questions/7586768/mongoose-form-to-save-model-with-embedded-documents/7587101 – Chance

+0

하지만 핵심 질문은 이해합니다. 본질적으로 동일합니다. 나는이 문제의 구체적인 내용을 이미 대답했으나 대답했다. – Chance

답변

1

는 :

<textarea name="feed[name]"></textarea> 
<textarea name="feed[key]"></textarea> 
<textarea name="feed[name]"></textarea> 
<textarea name="feed[key]"></textarea> 

당신은 기본적으로 말을 "나는 분명히 잘못된 피드의 이름, 피드의 키 피드의 이름, 피드의 키에 대한 텍스트 상자가 필요하면 feed[0][name]을했다면 .... . feed[1][name] "첫 번째 피드의 텍스트 상자가 필요합니다. 두 번째 피드의 텍스트 박스가 필요합니다."

하위 개체로 처리하는 대신 부모 및 자식을 깨고 있기 때문에, 각각을 blogPost.feeds로 밀어 넣고 저장해야합니다.

기존의 피드 배열 일 수있는 새로운 개체를 ontop에 추가하기 만하면 특히 편집 할 때 특히주의해야합니다.

+0

쿨, [0] [이름] 내 문제를 많이 풀었다. 감사... – tuddy