Hỏi về mối quan hệ hasManyThrough trong mongodb với mongoose
-
Các bác giúp em với ạ, em không biết tạo mối quan hệ trong mongodb như thế nào ạ. Ví dụ em đang có 1 collection là Category và tiếp thep là một colection tên là Subcategory, tiếp đến là 1 colection Posts. Hiện tại thì em có mối quan hệ là Category sẽ có nhiều Subcategory, và Subcategory sẽ có nhiều post. Vậy làm thế nào để xây dựng 1 Category cũng sẽ có nhiều post thông qua collection Subcategory. Mọi người giúp em với ạ
-
Chỉ cần 2 bảng Category và Post
var categorySchema = new mongoose.Schema({ name: { type: String }, subCategory: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' }, }); var postSchema = new mongoose.Schema({ title: { type: String }, category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' }, });
-
Là sao hả bác ơi, bác hướng dẫn em chút được k a?
-
Example :
Category Laptop = { id: 1, name: Laptop , subCategory: null},
Category Apple = { id: 2, name: Apple, subCategory: 1},
Post Macbook Air 13 = { id:3, title: Macbook Air 13, subCategory: 2 }theo cáu trúc này , bạn có thể tìm được tất cả các Post có category = Laptop , hoặc các Post có Category = Apple
-
@Phu-Le said in Hỏi về mối quan hệ hasManyThrough trong mongodb với mongoose:
ể tìm được tất cả các Post có categor
thanks bác, nhưng em vẫn chưa hiểu lắm, cụ thể mình set cái model như thế nào được ạ, em dùng mongoose
-
thay vì 3 Model : Category , Sub Category, Post
thì làm 2 Model : Category , PostModel Category : thì bạn làm kết nối với Category, ví dụ code mình cũng đã viết sẵn ( sử dụng Mongoose )
var categorySchema = new mongoose.Schema({ name: { type: String }, subCategory: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' }, });
Model Post : thì bạn làm kết nối tới Category
var postSchema = new mongoose.Schema({ title: { type: String }, category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' }, });
-
@Phu-Le said in Hỏi về mối quan hệ hasManyThrough trong mongodb với mongoose:
postSchema
Thanks bac nhiều ạ, mà có cách nào thêm subcategory vào không bác?