Javascript 删除mongoose中的嵌入文档

Javascript 删除mongoose中的嵌入文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我不熟悉node.js和MongoDB。我使用Mongoose库通过node.js访问MongoDB 我有两个模式,书和作者。作者属于一本书,这本书有许多作者 我在我的模式中有以下内容: var mongoose = require( 'mongoose' ); var Schema = mongoose.Schema; var Book = new Schema({ title : String, isbn : String, authorId : [{ type

我不熟悉node.js和MongoDB。我使用Mongoose库通过node.js访问MongoDB

我有两个模式,书和作者。作者属于一本书,这本书有许多作者

我在我的模式中有以下内容:

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' );

问题是,当我从作者那里删除嵌入Book的文档时,它会被删除,而不会检查引用完整性。我的设想是,如果作者文档与书一起嵌入,则无法删除它。Mongoose是否会自动检查书中嵌入的作者文档?可能吗?那么怎么做呢?

您可以为您提到的模式尝试以下代码

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

有关

的详细信息否,没有内置任何引用完整性检查。但是,您可以通过“删除”中间件添加它,如中所示。