2013-04-03 13 views
6

Jestem nowy w węźle node.js i MongoDB. Używam biblioteki Mongoose do uzyskiwania dostępu do MongoDB za pomocą node.js.Usuń osadzony dokument w mangecie

Mam dwa schematy, książkę i autora. Autor należy do książki i książki ma wielu autorów.

mam to w moich schematów:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var Book = new Schema({ 
    title : String, 
    isbn : String, 
    authorId : [{ type: Schema.Types.ObjectId, ref: 'Author' }], 
    updated_at : Date 
}); 

var Author = new Schema({ 
    name : String, 
    updated_at : Date 
}); 

mongoose.model('Book', Book); 
mongoose.model('Author', Author); 

mongoose.connect('mongodb://localhost/library'); 

Problem polega na tym, że kiedy usunąć dokument od autora, który jest osadzony w książce zostanie on usunięty bez sprawdzania integralności referencyjnej. Mój scenariusz jest taki, że jeśli dokument autora jest osadzony w książce, nie można go usunąć. Czy Mongoose automatycznie sprawdza dokument autora umieszczony w książce? Czy to możliwe? więc jak?

+1

Nie, nie ma żadnych więzów integralności sprawdzanie wbudowany Można jednak dodać, że poprzez „usunąć” middleware jak w [Ta odpowiedź] (http:. // stackoverflow .com/a/14349259/1259510). – JohnnyHK

Odpowiedz

1

Możesz wypróbować poniższy kod dla wspomnianego schematu.

Author.pre('remove', function(next) { 
    Author.remove({name: this.name, updated_at: this.updated_at }).exec(); 
    Book.remove({authorId : this._id}).exec(); 
    next(); 
}); 

Więcej informacji na SchemaObj.pre(method,callback)

Powiązane problemy