#mongodb #express #mongoose
#mongodb #выражать #мангуст
Вопрос:
Я создаю проект, в котором есть две коллекции: cafes
для хранения информации о различных кафе и reviews
для хранения информации об отзывах о кафе, которая структурирована следующим образом:
Database
|
--cafes (collection)
-- _id:5ffb7a6bf32d1b27ac8474d9
cafeName:"Customs Coffee
photoURL:"https://*******
--reviews (collection)
--_id:5ffb95b75624dd13d825ea5e
userName:"Josh"
stars:"4"
title:"Second review of customs coffee"
photo:"photoURL.com"
blurb: "this is the blurb for the second review of customs"
cafe:"Customs Coffee"
createdAt:2021-01-11T00:03:03.842 00:00
Я хочу, чтобы каждый документ обзора в reviews
коллекции также содержал идентификатор кафе, о котором идет обзор — есть какие-либо предложения о том, как я могу это сделать? Так, например, обзорный документ, как показано выше, в идеале должен выглядеть следующим образом:
id:5ffb95b75624dd13d825ea5e
userName:"Josh"
stars:"4"
title:"Second review of customs coffee"
photo:"photoURL.com"
blurb: "this is the blurb for the second review of customs"
cafe:"Customs Coffee"
**cafeId:5ffb7a6bf32d1b27ac8474d9**
createdAt:2021-01-11T00:03:03.842 00:00
Вот схема для коллекции cafes
and reviews
:
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const cafeSchema = new Schema({
cafeName:String,
photoURL:String,
}, {timestamps:true})
cafeSchema.virtual('reviews', {
ref: 'Review',
localField: '_id',
foreignField: 'cafe'
});
const Cafe = mongoose.model('cafes', cafeSchema)
module.exports = Cafe
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const reviewSchema = new Schema({
userName:String,
stars:String,
title:String,
photo:String,
blurb:String,
cafeName:String,
cafe: {
type: Schema.Types.ObjectId,
ref: 'Cafe'
}
}, {timestamps:true})
const Review = mongoose.model('reviews', reviewSchema)
module.exports = Review
Комментарии:
1. у вас есть особая причина для использования
populating virtual
в CafeSchema? из-за вашей проблемы не нужно создаватьcafeSchema.virtual