2013-11-25 2 views
1

С MongoDB и Mongoose, как я могу пометить объекты как зависящие от их отношений, так что если объект родителя будет удален, все дочерние объекты, зависящие от него, также будут удалены. Например, как я могу автоматически удалить все статьи автора, если автор удален?Mongoose - Как определить и удалить зависимые отношения?

var AuthorSchema = new Schema({ 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    name: { 
     type: String, 
     default: '', 
     trim: true 
    } 
}); 

var ArticleSchema = new Schema({ 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    title: { 
     type: String, 
     default: '', 
     trim: true 
    }, 
    content: { 
     type: String, 
     default: '', 
     trim: true 
    }, 
    author: { 
     type: Schema.ObjectId, 
     ref: 'Author' 
    } 
}); 

ответ

1

Если вы хотите сделать что-то вроде «внешний ключ на каскадного удаления» MySQL, где при удалении родителя, дети будут автоматически удалены, то это не представляется возможным в чистом MongoDB.

Для этого вы должны реализовать его в своей логике приложения. Когда вы удаляете автора, вы должны запустить другое удаление в коллекции статей на основе идентификатора authorID. Не забудьте указать индекс в этом поле.

+0

спасибо ... @Salvador. Я как-то пропустил часть индекса. Кстати, у вас есть 4725 просмотров в ближайшие 1 год 2 месяца. Может быть, из-за вашей репутации или картины. :) – inquisitive

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