2015-11-24 2 views
1

Как установить коллекцию по умолчанию в схеме модели в мангусте. Используя базовый пример, как я могу получить, например, комментарий по умолчанию в массиве комментариев. напримерКак установить коллекцию по умолчанию в схеме встроенного документа mongoose

var defaultComment = {title: 'add your first post'}

мне делать что-то подобное в определении? comments: {type:[Comments], default:defaultComment }

var Comments = new Schema({ 
    title  : String 
    , body  : String 
    , date  : Date 
}); 

var BlogPost = new Schema({ 
    author : ObjectId 
    , title  : String 
    , body  : String 
    , date  : Date 
    , comments : [Comments] 
    , meta  : { 
     votes : Number 
     , favs : Number 
    } 
}); 

mongoose.model('BlogPost', BlogPost); 

ответ

0

Согласно документации Mongoose для Schemas, ключи могут указать default value. Так для примера, можно определить Комментарии схему таким образом:

var Comments = new Schema({ 
    title  : String 
    , body  : String 
    , date  : Date 
}); 

var CommentsModel = mongoose.model("comments", Comments); 

Затем хранить по умолчанию комментарий, и использовать его в качестве значения по умолчанию в вашей BlogPost схеме:

var defaultComment = new CommentsModel({ 
    title: "Add your first post" 
}); 

var BlogPost = new Schema({ 
    author : ObjectId 
    , title  : String 
    , body  : String 
    , date  : Date 
    , comments : { type: [Comments], default: defaultComment } 
    , meta  : { 
     votes : Number 
     , favs : Number 
    } 
}); 

Я надеюсь, что это помогает. Ура!

+0

не является линией 'var CommentsModel = mongoose.model (" comments ", Comments);' создает новую коллекцию в mongodb с комментариями, а не выводит ее как встроенную коллекцию? – MonkeyBonkey

+0

Нет, без явного выполнения операции сохранения в документе 'defaultComment'. В этом примере, когда будет создан новый документ BlogPost, массив комментариев будет автоматически заполнен одним экземпляром встроенного документа 'defaultComment', не создавая коллекцию' 'comments. – tylercasson

Смежные вопросы