Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * ======================================
- * EXAMPLE ONE POPULATE METHOD MONGOOSE
- *=======================================
- *
- */
- 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
- },
- courseId: {
- type: String,
- ref: 'Course',
- default: shortid.generate
- }
- },
- { timestamps: true }
- )
- const User = mongoose.model('User', UserSchema, 'User')
- /**
- * @description course mongoose schema
- */
- const CourseSchema = new mongoose.Schema(
- {
- userId: { type: mongoose.Types.ObjectId },
- course: []
- },
- { timestamps: true }
- )
- 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({ fullName: 'john doe' })
- const courseResult = await Course.findOne({ userId: user._id })
- .populate({
- path: 'userId',
- select: 'course firstName lastName'
- })
- .lean()
- console.log({
- fullname: user.fullName,
- courses: courseResult.course
- })
- process.exit(0)
- }
- // resultsCourse()
- /**
- * =====================================
- * EXAMPLE TWO POPULATE METHOD MONGOOSE
- *======================================
- *
- */
- 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 course mongoose schema
- */
- const CourseSchema = new mongoose.Schema(
- {
- userId: { type: mongoose.Types.ObjectId },
- course: []
- },
- { timestamps: true }
- )
- const Course = mongoose.model('Course', CourseSchema, 'Course')
- /**
- * @description user mongoose schema
- */
- const UserSchema = new mongoose.Schema(
- {
- fullName: {
- type: String,
- trim: true,
- required: true
- },
- courseId: {
- type: String,
- ref: 'Course',
- default: shortid.generate
- }
- },
- { timestamps: true }
- )
- UserSchema.post('save', async function (doc, next) {
- if (doc) {
- await Course.create({ userId: doc._id })
- next()
- }
- })
- const User = mongoose.model('User', UserSchema, 'User')
- /**
- * @description register user account
- */
- async function registerAccount() {
- const userData = new User({ fullName: 'john doe' })
- await userData.save()
- 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({ fullName: 'john doe' })
- const courseResult = await Course.findOne({ userId: user._id })
- .populate({
- path: 'userId',
- select: 'course firstName lastName'
- })
- .lean()
- console.log({
- fullname: user.fullName,
- courses: courseResult.course
- })
- process.exit(0)
- }
- // resultsCourse()
- /**
- * =======================================
- * EXAMPLE THREE POPULATE METHOD MONGOOSE
- *========================================
- *
- */
- 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()
Add Comment
Please, Sign In to add comment