2017-12-06 5 views
0

수동으로 생성 된 ID로 모음을 채우려고합니다. 테스터가 피드백을 제공하는 것을 더 쉽게하기 위해이 정보가 필요합니다. [다른 것들 중에서] ID로 검색 레코드를 작성하기 때문에.미리 생성 된 ID를 사용하여 몽구트 레코드 만들기

미리 정의 된 몇 개의 키가있는 const 어레이를 정의했으며 나머지는 몽구스가 생성하려고합니다. 다음은 샘플 데이터로 데이터베이스를 채우는 단편입니다.

var col = db.collection('clients') 
for (let i = 0; i < count; i++) { 
    var client = createClientRecord() 
    if (cifs.length > i) { 
    client._id = cids[i] 
    } else { 
    client._id = new mongoose.Types.ObjectId 
    } 
    console.log('client._id:', client._id) 

이 기능이 작동하지 않습니다. 내가 배열에있는만큼 많은 레코드를 가져옵니다. 몽구스 생성 ID가 작동하지 않습니다. 코드가 막혔습니다.

또한, 나는 정의 내 schema 같이

const clientSchema = new mongoose.Schema({ 
    id: {type: String, unique: true, required: true}, 
    email: { type: String, unique: true, required: true }, 
    birthName: String, 
    ... 
}) 

이 올바른 선택인가? 고유 한 id을 직접 만들 수 있습니까? id 또는 _id이되어야합니까?

아이디어가 있습니까?

답변

0

몽구스 에 의해 자동으로 ID 번호를 생성 할 필요가 없습니다.입니다. 스키마 정의 만하면됩니다. 그리고 스키마에 'id'와 '_id'필드를 지정하지 마십시오. 모든 것은 몽구스에 의해 처리 될 것입니다.

마지막 질문 ('id'또는 '_id')의 '_id'는 MongoDB ID 자체 (Object ID)이지만 'id'는 '_id'의 문자열 형식의 getter입니다. 'id'와 '_id'는 유사하지만 형식이 다릅니다. 'id'는 문자열이고 '_id'는 객체 ID이므로 다음과 같은 조건이 있습니다. 그것들은 값으로는 같지만 유형에 의해서는 동등하지 않습니다.

기본적으로 고유 한 ID를 설정할 수 있지만 기본적으로 위에서 설명한 것처럼 작동합니다.

이 링크를 따르십시오 : http://mongoosejs.com/docs/guide.html#id

0

내가 코딩 해요 응용 프로그램에서이 작업을 수행. 먼저 ID를 생성 한 다음 데이터베이스에 보내기 전에 생성하려는 객체에 ID를 할당합니다. 여기 내가하는 일이 있습니다 :

const generatedId = mongooTypes.ObjectId(); 

const newItem = { 
    _id: generatedId, 
    name: name, 
    description: description 
}; 

Items.create(newItem).then((item) => { 
    // Here you can check that generatedId and item._id are the same 
    if (item._id.equals(generatedId)) { console.log('Created item with pre-generated ID'); } 
})