2017-10-10 7 views
0

への参照を含む2つの文書を作成しようとすると、ポスト、応答のための私のスキーマです。(簡易版)最大コールスタックのサイズは、私は以下お互い

const PostSchema = new Schema({ 
    title: { 
     type: String, 
     required: true, 
    }, 
    replies:[{type:Schema.ObjectId, ref:"Reply"}] 
}); 

const ReplySchema = new Schema({ 
    post: { 
     type:Schema.ObjectId, 
     ref:"Post" 
    }, 
    message: { 
     type: String, 
     required: true, 
     minlength: 1, 
    } 
}); 

私は2つを作成して保存しようとすると超過しました相互参照を持つオブジェクト。エラーが発生しました:最大呼び出しスタックサイズを超えました

let post = new Post({ 
    'title':postData.title 
}); 

let reply = new Reply({ 
    'post': post, 
    'message':postData.message 
}); 

post.replies.push(reply); 

post.save(function(err, post){ 
    if(err) return next(err); 
    reply.save(function(err,reply){ 
     if(err) return next(err); 
     res.status(201).json({'success':1}); 
    }); 
}); 

ありがとうございます。

答えて

0

問題を解決しました。私はこのサイトで同様の質問を見ただけです。問題は、ドキュメントを別のドキュメントのrefプロパティとして渡す場合です。 doc自体の代わりにdoc._idを使用する必要があります。

だからここに、私たちは直接ポストを渡すべきではありません。

let reply = new Reply({ 
    'post': post._id, 
    'message':postData.message 
}); 

let reply = new Reply({ 
    'post': post, 
    'message':postData.message 
}); 

は、に変更する必要があります

関連する問題