2015-01-21 8 views
3

몽구스를 사용하고 DB를 쿼리 할 때 기본적으로 모든 필드가 선택되며 Mongoose에게 내가 선택하고 싶지 않은 필드를 명시 적으로 말해야합니다. 필드 user는 어떻게해야합니까 :몽구스 스키마에서 명시 적으로 선언 된 필드 만 선택

var schema = new Schema(
    { 
    insertedAt: {type: String}, 
    tags: {type: String}, 
    user: {type:Object, select:false}, 
    connectedIds: {type:Array} 
    } 

문제는, 필드는 그것에 대해 아는 API 개발자 (나)없이 DB에 추가 될 수 있습니다.

몽구스에게 만 말할 수 있습니까? 명시 적으로 설정되는 선택 필드는 무엇입니까?

+1

mongo의 기본 쿼리는이 작업과 정확히 일치하는 'projection'필드를 추가합니다. 몽구스로 스키마에서 투영을 설정할 수 있습니까? 스키마 문서가 도움이 될 수 있습니다. http://mongoosejs.com/docs/api.html#schematype_SchemaType-select –

답변

3

항상 Schema에 정의 된 필드 만 선택하는 것이 좋습니다. 누군가는 않을거야, 당신의 객체에 새로운 필드를 추가하더라도 그 방법을

var fields = Object.keys(yourSchema.paths).join(' '); 

//and when execute a query 
YourModel.find({}).select(fields).exec(callback); 

: 당신이해야 할 일은 스키마 paths 속성을 사용하여 모든 필드를 얻을처럼, 당신의 select() 문에 전달하는 것입니다 표시됩니다. 단점은 모든 쿼리에 대해이를 수행해야한다는 것입니다.

관련 문제