У меня есть две схемы, которые я хотел бы ссылаться друг на друга. Ссылка DealSchema
внутри VenueSchema
работает нормально, но ссылка VenueSchema
внутри DealSchema
выдает ошибку.
// venueModel.js
import mongoose from 'mongoose';
import { DealSchema } from './dealModel'
import { Decimal128 } from 'mongodb';
const Schema = mongoose.Schema;
const Deal = new mongoose.model('Deal', DealSchema);
export const VenueSchema = new Schema({
name: {
type: String,
required: 'Venue name is required'
},
phone: {
type: Number
},
deals: {
type: [{ type: Schema.Types.ObjectId, ref: Deal }]
},
coords: {
lat: Decimal128,
lng: Decimal128
}
})
Выше работает, как и ожидалось, я могу запросить мою базу данных, и она возвращает все как есть должен. Приведенный ниже фрагмент кода не работает, даже если он похож на макет.
Он выбрасывает MissingSchemaError: Schema hasn't been registered for model "Venue"
.
// dealModel.js
import mongoose from 'mongoose';
import { VenueSchema } from './venueModel';
const Schema = mongoose.Schema;
*** this is the line that creates the error ***
const Venue = new mongoose.model('Venue', VenueSchema);
export const DealSchema = new Schema({
venue: {
type: Schema.Types.ObjectId, ref: Venue
},
description: {
type: String,
required: 'Deal description is required'
}
})
В идеале, каждое место встречи будет иметь множество сделок, которые они предоставляют, и каждая сделка будет связанные с местом проведения.
Использование mongodb v3.5.4
и mongoose v5.9.3