source

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

lovecheck 2023. 6. 1. 22:49
반응형

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

다음은 내 폴더 구조입니다.

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

파일 노래에 있는 내 코드.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);

그리고 이것은 파일 앨범에 있는 제 코드입니다.제이에스

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);


앨범을 만드는 방법.js는 SongSchema가 AlbumSchema로 정의되는 것을 알고 있습니다.

Mongoose를 사용하여 다른 곳에서 직접 정의된 모델을 얻을 수 있습니다.

require('mongoose').model(name_of_model)

albums.js의 예제에서 스키마를 가져오려면 다음을 수행합니다.

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

등록된 Mongoose 모델에서 스키마를 가져오려면 스키마에 액세스해야 합니다.

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

Mongoose가 어떻게 작동하는지에 대한 더 깊은 측면에 익숙하지 않은 다른 사람들에게, 기존의 대답은 혼란스러울 수 있습니다.

다음은 보다 일반적인 컨텍스트에서 더 많은 사용자가 액세스할 수 있는 다른 파일에서 스키마를 가져오는 일반적인 구현 예입니다.

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

다음은 문제의 특정 사례에 대한 수정된 버전입니다(앨범.js 내에서 사용됨).

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

이를 통해 먼저 파일에 액세스하여 모델을 요구하는 경우가 일반적인 경우 모델의 스키마에 액세스하는 경우를 제외하고는 파일에 액세스하고 필요한 경우에 따라 해당 모델의 스키마에 액세스할 수 있습니다.

다른 답변은 변수 선언 내에서 mongoose를 요구하며, 이는 다음과 같은 변수를 선언하기 전에 mongoose를 요구하는 일반적인 예와 반대됩니다.const mongoose = require('mongoose');몽구스를 그렇게 사용합니다.그러한 사용 사례는 지식적으로 접근할 수 없었습니다.


대체 옵션

일반적으로 사용하는 것처럼 모델만 필요로 한 다음 모델의 스키마 속성을 통해 스키마를 참조할 수 있습니다.

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]
});
var SongSchema = require('mongoose').model('Song').schema;

위의 코드 행은albums.js반드시 효과가 있을 것입니다.

"songs" : [{type: Schema.Types.ObjectId, ref: 'Song', required: true}]

언급URL : https://stackoverflow.com/questions/8730255/how-to-get-schema-of-mongoose-database-which-defined-in-another-model

반응형