6

node.js と MongoDB は初めてです。node.jsでMongoDBにアクセスするためにMongoose Libraryを使用しています。

Book と Author の 2 つのスキーマがあります。著者は本に属し、本は多くの著者を持っています。

私は自分のスキーマにこれを持っています:

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 から削除すると、参照整合性をチェックせずに削除されることです。私のシナリオは、Author ドキュメントが Book に埋め込まれている場合、削除できないというものです。Mongoose は本に埋め込まれた著者文書を自動的にチェックしますか? 出来ますか?ではどうやって?

4

1 に答える 1

1

You can try the following code for the schema you mentioned.

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

More info on SchemaObj.pre(method,callback)

于 2013-04-04T06:34:25.720 に答える