2016-08-31 7 views
1

나는 몽구스 스키마의 기본 ObjectId가 아닌 다른에 자신의 _id 속성을 설정할 수있는 기능을 보여주는 사례의 숫자를 발견했습니다 설정 가능 :는 자신의 몽구스 스키마 _id 속성

1)이 항목이 자동으로 증가하고 나에게 필요한 모든 항목을 처리합니까? 필자가 보았던 유일한 예제는 MongoDB에서 유일하고 증가 된 키를 보장하기위한 추가 코드를 보여주지 않습니다.

2) 이것은 나를 위해 작동하지 않습니다. 스키마에서 _id을 제거하면 예상대로 문서가 올바르게 게시되지만 추가하면 (_id: Number) 아무 것도 컬렉션에 추가되지 않고 Postman은 단지 빈 개체 {}을 반환합니다. 여기에 관련 코드는 다음과 같습니다

var personSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String 
}); 

var Person = mongoose.model("Person", personSchema); 

app.get("/person", function (req, res) { 
    Person.find(function (err, people) { 
     if (err) { 
      res.send(err); 
     } else { 
      res.send(people) 
     } 
    }); 
}); 

app.post("/person", function(req, res) { 
    var newPerson = new Person(req.body); 

    newPerson.save(function(err) { 
     if (err) { 
      res.send(err); 
     } else { 
      res.send(newPerson); 
     } 
    }); 
}); 

POST 요청은 {}를 반환하고, 컬렉션이나 문서도이 만들어집니다.

답변

0

스키마 정의에 _id 필드를 포함하는 경우 문서를 삽입 할 때 직접 수동으로 생성해야합니다. _id. 그렇지 않으면 문서가 삽입되지 않습니다.

스키마 정의에 _id 필드를 포함하지 않으면 Mongoose가 문서를 삽입 할 때 자동으로이 필드를 만듭니다. ObjectId (MongoDB가 설정하는 기본 방법입니다) 문서의 _id 필드).

+0

이것은 의미가 있습니다. 이제는 자신의'id' 속성을 만들고 올바른 증분을 유지하는 몇 가지 모범 사례를 살펴 보겠습니다. – bobbyz