다른 모델에 정의된 몽구스 데이터베이스의 스키마를 가져오는 방법
다음은 내 폴더 구조입니다.
+-- 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
'source' 카테고리의 다른 글
루비에서 배열을 해시로 변환하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.01 |
---|---|
iPhone의 NS 문자열에서 HTML 태그 제거 (0) | 2023.06.01 |
장고에서 "선택" 필드 옵션을 올바르게 사용하는 방법 (0) | 2023.06.01 |
PostgreSQL: 명령줄에서 매개 변수를 전달하는 방법은 무엇입니까? (0) | 2023.06.01 |
pg_dump를 사용하여 데이터베이스 내의 한 테이블에서만 삽입문 가져오기 (0) | 2023.06.01 |