Я пытался получить его, чтобы я мог поместить несколько «тренингов» в тип тренинга, если они будут сливаться друг с другом, как только пользователь получит и то, и другое. Однако я не могу заставить его работать, и я озадачен тем, как go об этом.
Вот моя обучающая модель:
const mongoose = require('mongoose')
const Schema = mongoose.Schema
let trainingSchema = new Schema({
name: {
type: String,
required: true,
unique: true
},
shortHand: {
type: String,
required: true,
unqiue: true
},
desc: { type: String },
office: {
type: Schema.Types.ObjectId,
ref: "Office"
},
isMerge: { type: Boolean, default: false},
mergeInto: [{
type: Schema.Types.ObjectId,
ref: "Training"
}]
})
module.exports = mongoose.model('Training', trainingSchema)
и вот мое обучение object
/**
* Defines Training Type
*/
const TrainingType = new GraphQLObjectType({
name: "Training",
fields: {
id: { type: GraphQLID },
name: { type: GraphQLString },
shortHand: { type: GraphQLString },
desc: { type: GraphQLString },
office: {
type: require('./office').OfficeType,
resolve: async (office) => {
return await Office.findById(office.office)
}
},
isMerge: { type: GraphQLBoolean },
mergeInto: {
type: new GraphQLList(TrainingType), // This is the error line
resolve: async (training) => {
return await Training.find({id: training.id})
}
}
}
})
module.exports.TrainingType = TrainingType
Теперь, очевидно, я получаю сообщение об ошибке: TrainingType не определен, так как я пытаюсь использовать что-то, что еще не было полностью определено. Но я пробовал другие способы, такие как создание другого objectType с именем MergesInto, а затем использовать его в другом. Но это тоже не работает, так как один требует другого, и один должен быть определен раньше другого, что даст мне ошибку «Не определено». Я не могу понять, как заставить это работать. Это вообще возможно?