Michael
Michael

Reputation: 55

How to update mongoose schema?

just started learning mongodb, currently i have this schema

var BlogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: {
    type: Date,
    default: Date.now
}});

and i wanted to update it to be like this, but currently its not working right now, when i checked it on the mongo console the schema is still the old one

var BlogSchema = new mongoose.Schema({
        title: String,
        image: String,
        body: String,
        created: {
            type: Date,
            default: Date.now
        },
        author: {
            id: {
                type: mongoose.Schema.Types.ObjectId,
                ref: "User"
            },
            username: String
        }
    });

this is the best i've come up with after reading this post, but it throw me an error TypeError: Undefined type undefined at author.required Did you try nesting Schemas? You can only nest using refs or arrays.

var BlogSchema = new mongoose.Schema({
    title: String,
    image: String,
    body: String,
    created: {
        type: Date,
        default: Date.now
    },
    author: {
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "User"
        },
        username: {
           type: String,
           required: true, 
           default: null
        }
    }
}); 

Upvotes: 1

Views: 2783

Answers (1)

parwatcodes
parwatcodes

Reputation: 6796

You can't use Schema like that instead just make another authorSchema and use it as array.

var mongoose = require('mongoose');

var authorSchema = new mongoose.Schema({
    id: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "User"
    },
    username: {
        type: String,
        required: true,
    }
})

var BlogSchema = new mongoose.Schema({
    title: String,
    image: String,
    body: String,
    created: {
        type: Date,
        default: Date.now
    },
    author: [authorSchema]
})

Upvotes: 1

Related Questions