2012-07-24 2 views
1

나는 블로깅 시스템을 작성 중입니다. 이제 게시물에 대한 의견을 작성하고 있습니다.노드 + 몽고 : 컬렉션 내부의 배열에 레코드 추가하기

{ 
"topic": "Post Topic", 
"post": "<p>\r\n\tPost text</p>\r\n", 
"time_added": 1343167025, 
"author": "Ashley Brooks", 
"_id": { 
    "$oid": "500f1a315759c73805000001" 
} 

}

지금은이 게시물에 대한 댓글을 추가하고 싶습니다 : 여기에 모든 단일 게시물에 대한 스키마입니다. 나는 의견을 저장하는 가장 좋은 방법은 같은 떨어지게 가정하자 :

{ 
"topic": "Post Topic", 
"post": "<p>\r\n\tPost text</p>\r\n", 
"time_added": 1343167025, 
"author": "Ashley Brooks", 
"_id": { 
    "$oid": "500f1a315759c73805000001" 
}, 
"comments" : [ 
    { 
     "author":"James Brown", 
     "comment":"My awesome comment" 
    }, 
    { 
     "author":"Jimmy White", 
     "comment":"And this is my comment" 
    } 
] 
} 

내가 몽고에 대한 몇 가지 문서를 읽었습니다, 그러나 나는 새로운 코멘트를 추가하는 적절한 방법을 찾을 could'n. 이것은 내가 지금하고있는 방식입니다 :

exports.post = function(req, res) { 
if (req.currentUser) { 
    db.collection("posts", function (err, collection) { 
     var obj_id = BSON.ObjectID.createFromHexString(req.params.id); 
     console.log(obj_id); 
     collection.findAndModify(
      {_id: obj_id}, // query for a post 
      {$push: { 
       comments: [ {author: req.body.comment, name: "testname" } ] 
       } 
      }, 
      function(err, object) { 
       if (err){ 
        console.warn(err.message); 
       }else{ 
        res.redirect('/'); 
       } 
      }); 
    }); 
} else { 
    res.redirect('/'); 
} 

}};

그것은 나에게 같은 오류를 반환 내가 잘못

exception: must specify remove or update 

을하고있어 무엇?

P. BTW, 나는 그것과 같은 독특한 ID 또는 smth와 별도의 코멘트를 표시하는 것이 좋을 것 같아요. 모든 추가 코멘트에 대해 obj_id 매개 변수를 추가하도록 Mongo를 지정하려면 어떻게해야합니까? 미리 감사드립니다.

답변

1

중고 '갱신'과 일했다 :

collection.update(
      {_id: obj_id}, // query 
      {$push: { 
       comments: {comment: req.body.comment, name: "testname" } 
       } 

      },