[MONGODB] 몽구스 모델에서 스키마 특성을 받고
MONGODB몽구스 모델에서 스키마 특성을 받고
나는 스키마와 모델을 만들 수 Mongoose.js을 사용하고 있습니다.
나는 (많은) 모델의 목록을 가지고와 시간에 나는 속성 특정 모델을 구성 / 키를 좀하고 싶습니다.
특정 모델에 대한 속성 스키마를 꺼내하는 방법이 있습니까?
예를 들어,
var mySchema = module.exports = new Schema({
SID: {
type: Schema.Types.ObjectId
//, required: true
},
teams: {
type: [String]
},
hats: [{
val: String,
dt: Date
}],
shields: [{
val: String,
dt: Date
}],
shoes: [{
val: String,
dt: Date
}]
}
);
이 스키마 [SID, 모자, 팀, 방패, 신발]의 속성을 식별 / 당겨 수 있나요?
해결법
-
==============================
1.네, 가능합니다.
네, 가능합니다.
각 스키마 (이 내 코드의 예입니다) 같은 약간 보이는 경로 속성이 있습니다 :
paths: { number: [Object], 'name.first': [Object], 'name.last': [Object], ssn: [Object], birthday: [Object], 'job.company': [Object], 'job.position': [Object], 'address.city': [Object], 'address.state': [Object], 'address.country': [Object], 'address.street': [Object], 'address.number': [Object], 'address.zip': [Object], email: [Object], phones: [Object], tags: [Object], createdBy: [Object], createdAt: [Object], updatedBy: [Object], updatedAt: [Object], meta: [Object], _id: [Object], __v: [Object] }
당신은 너무 모델을 통해 액세스 할 수 있습니다. 그것은 Model.schema.paths에서입니다.
-
==============================
2.코멘트에 충분한 담당자를 가지고 있지만,이 또한 스키마 유형의 모든 통해 목록 및 루프를 밖으로 뱉어하지 마십시오.
코멘트에 충분한 담당자를 가지고 있지만,이 또한 스키마 유형의 모든 통해 목록 및 루프를 밖으로 뱉어하지 마십시오.
mySchema.schema.eachPath(function(path) { console.log(path); });
인쇄한다 :
number name.first name.last ssn birthday job.company job.position address.city address.state address.country address.street address.number address.zip email phones tags createdBy createdAt updatedBy updatedAt meta _id __v
또는이 같은 배열로 모든 속성을 얻을 수 있습니다 :
var props = Object.keys(mySchema.schema.paths);
-
==============================
3.lodash을위한 솔루션, 모든 스키마 속성을 포착 기능, 지정 제외
lodash을위한 솔루션, 모든 스키마 속성을 포착 기능, 지정 제외
_.mixin({ pickSchema: function (model, excluded) { var fields = []; model.schema.eachPath(function (path) { _.isArray(excluded) ? excluded.indexOf(path) < 0 ? fields.push(path) : false : path === excluded ? false : fields.push(path); }); return fields; } }); _.pickSchema(User, '_id'); // will return all fields except _id _.pick(req.body, _.pickSchema(User, ['_id', 'createdAt', 'hidden'])) // all except specified properties
자세한 내용은 여기 https://gist.github.com/styopdev/95f3fed98ce3ebaedf5c 읽기
-
==============================
4.당신은 단지 특성을 가지고 싶다면 당신은 추가로 시작하는 '$ ___이', 당신은 객체로 문서를 설정해야하는 ORM에 의한되지 추가 방법은 다음과 같이 속성에 액세스 :
당신은 단지 특성을 가지고 싶다면 당신은 추가로 시작하는 '$ ___이', 당신은 객체로 문서를 설정해야하는 ORM에 의한되지 추가 방법은 다음과 같이 속성에 액세스 :
Object.keys(document.toObject());
-
==============================
5.경우에 당신은 단지 toObject () 메소드를 사용하여 (중첩 및 인구 특성 포함)의 모든 속성 값을 갖고 싶어 :
경우에 당신은 단지 toObject () 메소드를 사용하여 (중첩 및 인구 특성 포함)의 모든 속성 값을 갖고 싶어 :
let modelAttributes = null; SomeModel.findById('someId').populate('child.name').exec().then((result) => { modelAttributes = result.toObject(); console.log(modelAttributes); });
출력은 다음과 같습니다
{ id: 'someId', name: 'someName', child: { name: 'someChildName' } ... }
-
==============================
6.그냥 당신이 얻을 싶은 필드 이름을 삽입합니다.
그냥 당신이 얻을 싶은 필드 이름을 삽입합니다.
let fieldName = 'birthday' console.log(mySchema.schema.paths[fieldName].instance);
-
==============================
7.허용 대답은 나를 위해 작동하지 않았다. 그러나 몽구스 5.4.2 사용하여 나는 다음을 수행하여 키를 얻을 수 있었다 :
허용 대답은 나를 위해 작동하지 않았다. 그러나 몽구스 5.4.2 사용하여 나는 다음을 수행하여 키를 얻을 수 있었다 :
const mySchema = new Schema({ ... }); const arrayOfKeys = Object.keys(mySchema.obj);
나는 그러나, 타이프 라이터를 사용하고 있습니다. 그게 문제되었을 수 있습니다.
-
==============================
8.내 솔루션을 사용하는 모델을 몽구스.
내 솔루션을 사용하는 모델을 몽구스.
스키마 속성
const schema = { email: { type: String, required: 'email is required', }, password: { type: String, required: 'password is required', }, };
개요
const FooSchema = new Schema(schema);
모델
const FooModel = model('Foo', FooSchema);
모델의 속성을 가져 오기 :
Object.keys(FooModel.schema.tree)
결과:
[ 'email', 'password', '_id', '__v' ]
from https://stackoverflow.com/questions/17035297/getting-schema-attributes-from-mongoose-model by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의에서 검색 / 프로젝션을 수행 할 때 어떻게 필드의 이름을 변경합니까? (0) | 2019.12.14 |
---|---|
[MONGODB] pyMongo과 ISODate 만들기 (0) | 2019.12.14 |
[MONGODB] MongoDB의 검색을 사용하여 자동 완성 기능을 구현 (0) | 2019.12.14 |
[MONGODB] 표현 GridFS에서 POST 요청에서 데이터 스트림을 저장, MongoDB를, Node.js를 (0) | 2019.12.14 |
[MONGODB] 집계 쿼리에 MongoDB의 성능 (0) | 2019.12.14 |