繁体   English   中英

在mongoose中删除嵌入的文档

[英]Remove embedded document in mongoose

我是node.js和MongoDB的新手。 我正在使用Mongoose Library通过node.js访问MongoDB。

我有两个架构,书和作者。 作者belongs_to一本书和书has_many作者。

我的模式中有这个:

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的Author中删除文档时,它将被删除而不检查参照完整性。 我的情况是,如果作者文档嵌入了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();
});

有关SchemaObj.pre的更多信息(方法,回调)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM