Wednesday, 24 May 2017

How to name a foreign key different from db name in mongoose

Is there a way in mongoose to define the relation between the foreign key field and what I refer to that field in the model is? My issue is that I have a mongo database where my foreign keys are all formatted like 'exampleId' instead of 'example'. I could just call out 'exampleId' directly but then it leads to weird things like when I populate 'exampleId' instead of 'example' (which is confusing because once populated, it is now the 'example' itself instead of its id).

Here is how I do it now and it works with my graphQL server, but only if my field in the database is 'course' while my database's field is 'courseId'

const CourseSchema = new Schema({
  _id: { type: String },
  sections: [{
    type: Schema.Types.String,
    ref: 'Section'
  }],
});


const SectionType = new GraphQLObjectType({
  name: 'SectionType',
  fields: () => ({
    id: { type: GraphQLID },
    courseId: {
      type: require('./course_type'),
      resolve(parentValue) {
        return Section.findById(parentValue)
          .populate('course')
          .then(section => section.course);
      }
    },
  }),
});



via Coherent

No comments:

Post a Comment