Benoit
0
Q:

ref in mongoose example

//EXAMPLE THREE

const mongoose = require('mongoose')
const shortid = require('shortid')

/**
 * @description setup database connection
 */

mongoose
  .connect('mongodb://localhost:27017/mongoose', {
    useFindAndModify: false,
    useUnifiedTopology: true,
    useNewUrlParser: true
  })
  .then(() => console.log('Connected'))
  .catch(() => console.log('Not Connected'))

/**
 * @description user mongoose schema
 */

const UserSchema = new mongoose.Schema(
  {
    fullName: {
      type: String,
      trim: true,
      required: true
    }
  },
  { timestamps: true }
)

UserSchema.virtual('videos', {
  ref: 'Course',
  localField: '_id',
  foreignField: 'userId'
})

UserSchema.set('toObject', { virtuals: true })

/**
 * @description course mongoose schema
 */

const CourseSchema = new mongoose.Schema(
  {
    userId: { type: mongoose.Types.ObjectId },
    course: []
  },
  { timestamps: true }
)

const User = mongoose.model('User', UserSchema, 'User')
const Course = mongoose.model('Course', CourseSchema)

/**
 * @description register user account
 */

async function registerAccount() {
  const user = await User.create({ fullName: 'john doe' })

  await Course.create({ userId: user._id })

  console.log('register successfuly')
  process.exit(0)
}
registerAccount()

/**
 * @description buy video course
 */

async function buyCourse() {
  const user = await User.findOne({ fullName: 'john doe' })

  const course = await Course.updateOne(
    { userId: user._id },
    {
      $push: {
        course: {
          $each: [
            { name: 'react for beginner', price: 95000 },
            { name: 'vue for beginner', price: 85000 },
            { name: 'angular for beginner', price: 75000 }
          ]
        }
      }
    }
  )

  console.log('sucessfuly to buy course')
  process.exit(0)
}
// buyCourse()

/**
 * @description results all course after buy course
 */

async function resultsCourse() {
  const user = await User.findOne().populate('videos').lean()

  console.log({
    fullname: user.fullName,
    courses: user.videos.map((v) => v.course[0])
  })
  process.exit(0)
}
// resultsCourse()
0
const storySchema = Schema({
  authors: [{ type: Schema.Types.ObjectId, ref: 'Person' }],
  title: String
});

// Later

const story = await Story.findOne({ title: 'Casino Royale' }).populate('authors');
story.authors; // `[]`
0
var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var eventSchema = Schema({
    title     : String,
    location  : String,
    startDate : Date,
    endDate   : Date
});

var personSchema = Schema({
    firstname: String,
    lastname: String,
    email: String,
    gender: {type: String, enum: ["Male", "Female"]}
    dob: Date,
    city: String,
    interests: [interestsSchema],
    eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }]
});

var Event  = mongoose.model('Event', eventSchema);
var Person = mongoose.model('Person', personSchema);
0

New to Communities?

Join the community