2016-05-15 5 views
0

でカスケードを削除します。私は1人の親を持つことができる要素のリストを持っている私のコレクションではマングース

{id:1, 
name:'name', 
parent:0} 

{id:2, 
name:'name 2', 
parent:1} 

{id:3, 
name:'name 3', 
parent:2} 

{id:4, 
name:'name 4', 
parent:0} 

私はidを持つオブジェクトを削除する場合:1、私はidを持つものアイテムを削除する:2,3また、

は、だから、私はモデルのスキームに削除するためにバインドを追加します。

File.js

schema.pre('remove', function(next) { 
    this.remove({folder: this._id}).exec(); 
    next(); 
}); 

が、私は、オブジェクトを削除するとき、私は得る:

RangeError: Maximum call stack size exceeded 

私は思いますエラーはで、File.removeになるはずですが、私はファイルモデルを使用していますので、使用方法はわかりません。

答えて

0

スタックオーバーフローがあります。

コードはremoveイベントを呼び出して削除します。これはremoveを呼び出すremoveフックを再度トリガーします。これはオペレーティングシステムがあまりにも多くのメモリを使用するプロセスを切断するまで繰り返されます。

これは、親要素を削除するときに明示的に呼び出す別の関数で実装する必要があります。

または、あなたが持っているリレーショナルデータ用に設計されたリレーショナルデータベースを使用できます。これらの種類の関係を実装することは、mongodbが設計されたものではありません。 MongoDBのは、MySQLと異なっているが、私は削除する3,4の要素はあまりないと思いますことを

Here's an article that explains when you should use nosql and when you should use a relational database

+0

OK .... – kikko088

関連する問題