복붙노트

[MONGODB] 다른 모델에 정의 몽구스 데이터베이스의 스키마를 얻는 방법

MONGODB

다른 모델에 정의 몽구스 데이터베이스의 스키마를 얻는 방법

이것은 내 폴더 구조입니다 :

+-- express_example
|---- app.js
|---- models
|-------- songs.js
|-------- albums.js
|---- and another files of expressjs

파일 songs.js에 내 코드

var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;

var SongSchema = new Schema({
name: {type: String, default: 'songname'}
, link: {type: String, default: './data/train.mp3'}
, date: {type: Date, default: Date.now()}
, position: {type: Number, default: 0}
, weekOnChart: {type: Number, default: 0}
, listend: {type: Number, default: 0}
});

module.exports = mongoose.model('Song', SongSchema);

그리고 여기에 파일 albums.js 내 코드입니다

var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;

var AlbumSchema = new Schema({
name: {type: String, default: 'songname'}
, thumbnail: {type:String, default: './images/U1.jpg'}
, date: {type: Date, default: Date.now()}
, songs: [SongSchema]
});

module.exports = mongoose.model('Album', AlbumSchema);

어떻게 할 수 albums.js이 SongSchema을 알고있는 것은 AlbumSchema 정의 할

해결법

  1. ==============================

    1.당신은 몽구스와 다른 곳에서 직접 정의 된 모델을 얻을 수 있습니다 :

    당신은 몽구스와 다른 곳에서 직접 정의 된 모델을 얻을 수 있습니다 :

    require('mongoose').model(name_of_model)
    

    이 작업을 수행 할 수 albums.js에 예에서 스키마를 얻으려면 :

    var SongSchema = require('mongoose').model('Song').schema
    
  2. ==============================

    2.등록 몽구스 모델의 스키마를 얻으려면, 당신은 특히 스키마에 접근 할 필요가 :

    등록 몽구스 모델의 스키마를 얻으려면, 당신은 특히 스키마에 접근 할 필요가 :

    var SongSchema = require('mongoose').model('Song').schema;
    
  3. ==============================

    3.

    var SongSchema = require('mongoose').model('Song').schema;
    

    당신의 albums.js 코드의 위의 라인은 확실히 작동합니다.

  4. ==============================

    4.몽구스의 작동 방식의 깊은 측면과 같은 익숙하지 않은 다른 사람을 위해, 기존의 응답 혼동 될 수있다.

    몽구스의 작동 방식의 깊은 측면과 같은 익숙하지 않은 다른 사람을 위해, 기존의 응답 혼동 될 수있다.

    다음은 일반적인 상황에서 오는 광범위한 청중에 액세스 할 수있는 다른 파일에서 스키마를 가져 일반화 된 구현 예이다.

    const modelSchema = require('./model.js').model('Model').schema
    

    여기에 문제의 특정 사건에 대한 수정 된 버전 (이 albums.js 내부에서 사용된다)이다.

    const SongSchema = require('./songs.js').model('Song').schema
    

    이로부터, 나는 처음 액세스를보고 하나 일반적으로 당신이 지금 특별히 그 모델의 스키마에 액세스이 경우를 제외하고, 모델을 필요로 가겠어요 어떻게 파일을 요구할 수 있습니다.

    다른 응답 변수 선언 내의 몽구스 필요하고 그 CONST 몽구스가 = ( '몽구스')를 필요로 변수를 선언 등을 통해 이전 몽구스을 요구하는 통상 발견 예 거스르는; 다음 같은 몽구스를 사용하여. 이러한 유스 케이스 나에게 지식 현명한 접근하지 않았다.

    당신은 일반적으로 다음 모델의 스키마 속성을 통해 스키마를 참조하는 것처럼 당신은 모델을 요구할 수 있습니다.

    const mongoose = require('mongoose');
    
    // bring in Song model
    const Song = require('./songs.js');
    
    const AlbumSchema = new Schema({
        // access built in schema property of a model
        songs: [Song.schema]
    });
    
  5. from https://stackoverflow.com/questions/8730255/how-to-get-schema-of-mongoose-database-which-defined-in-another-model by cc-by-sa and MIT license