2016-07-29 2 views
0

mongo를 사용하기 시작했으며 사용자가 'favourited'항목에 대한 스키마를 만들고 싶습니다. MongoDB & Mongoose로 즐겨 찾기 목록 구성하기

// load the things we need 
var mongoose = require('mongoose'); 

// define the schema for our favourites model 
var favouritedItemsSchema = mongoose.Schema({ 
    userId   : Number, 
    item    : [{ 
     itemId  : Number, 
     addedDate : Date 
    }] 
}); 

// create the model for favourites and expose it to our app 
module.exports = mongoose.model('Favourites', favouritedItemsSchema); 

, 나는 위의 방법은 적절한되는 NoSQL DB 설계 방식을 나타내는 것인지 궁금 관계형 DB 배경에서 오는 다음에 내 현재 코드, 사용 몽구스와 Node.js를 본다? 그렇지 않다면 누군가 디자인 철학에 맞는 것이 무엇인지를 보여줄 수 있습니까?

답변

1

네, 그렇습니다. 관계형과 NoSQL 디자인 방식은 완전히 다릅니다.

예를 들어 RDBMS에 10 개의 테이블이있는 경우 mongo에는 2 ~ 3 개의 콜렉션 만있을 수 있습니다. 왜냐하면 우리가 객체 간의 관계를 만드는 방식이 NoSQL (하위 문서, 배열 등)에서 훨씬 더 흥미 롭기 때문입니다.

기존 사용자 컬렉션을 재사용하여 문제를 해결하는 방법은 다음과 같습니다.

// load the things we need 
var mongoose = require('mongoose'); 

// define the schema for our model 
var userSchema = mongoose.Schema({ 
    username: string, 
    favourites: [{ 
     id: Schema.Types.ObjectId, 
     addedDate: Date 
    }] 
}); 

// export model 
module.exports = mongoose.model('User', userSchema); 
+0

당신은 또한 당신이 즐겨 찾기 및 제약 배열의 구속 배열을 생성하기 때문에 다음과 같이 할 수있는 나쁜 관행이 언급해야는/몽고에서 안티 패턴이다 –

관련 문제