Từ những gì tôi có thể thấy từ mã của bạn, News
hiện tại của bạn và Review
Lược đồ trông ổn.
Bạn cần xác định một Schema
khác cho Trending
.
var TrendingSchema = new mongoose.Schema({
referenceId : {
type : mongoose.Schema.Types.ObjectId
},
postType : String //To store News or Reviews
});
Trong khi lưu News
mới hoặc Reviews
, chèn _id
của tài liệu mới được lưu trong trending
bộ sưu tập.
var news = new News();
news.image = newsImage;
...
news.save(function(err,result)
{
if(!err)
{
var trending = new Trending();
trending.referenceId = result._id;
trending.postType = "News";
treding.save(function(err)
{
if(!err)
{
//success response
}
else
{
//error response
}
});
}
else
{
//send error response
}
});
Tương tự khi lưu Bài đánh giá
var review = new Review();
review.image = reviewImage;
...
review.save(function(err,result)
{
if(!err)
{
var trending = new Trending();
trending.referenceId = result._id;
trending.postType = "review"
treding.save(function(err)
{
if(!err)
{
//success response
}
else
{
//error response
}
});
}
else
{
//send error response
}
});
Vì vậy, hiện tại Trending
Bộ sưu tập sẽ chứa News
mới được lưu hoặc Review
, theo thứ tự chúng được created
. Vì vậy, bạn sẽ có thể nhận được Review
mới hoặc News
Đăng.
Trong khi tìm nạp Trending
, bạn có thể populate
họ sử dụng News
hoặc Review
Schema
dựa trên postType
.
Trendign.find({}).limit(10).exec(function(err,result)
{
if(!err && result.length!=0)
{
var trendingPosts = [];
result.forEach(function(trending){
if(trending.postType === "News"){
trending.populate({path : 'referenceId',model : 'News'},function(err,populatedItem)
{
if(!err)
{
trendingPosts.push(populatedItem);
}
});
}
else if(trending.postType === "Review"){
trending.populate({path : 'referenceId',model : 'Review'},function(err,populatedItem)
{
if(!err)
{
trendingPosts.push(populatedItem);
}
});
}
});
//now send the trendingPost array with latest News and Review Posts
}
else
{
//send Error response
}
});
Giờ đây, bạn có thể hiển thị News
mới nhất hoặc Review
và viết kiểu postType
.
Hy vọng đây là những gì bạn muốn.