2016-04-03 15 views
1

私はFinishedGamePlayingGameという2つのスキーマを持っています。どちらのスキーマも同じです。ゲームを終了するときに、PlayingGameFinishedGameコレクションにコピーしてから、PlayingGameを削除します。今のコードではエラーが発生しないようですが、FinishedGameには何も追加されません。シェルを実行すると、実行show collections私はplayinggamesとを参照してください。 何か助けていただければ幸いです。マングース、検索結果を保存しても何もしないようです。

相続人は、私はゲームを閉じたいときに実行されるコード:

あなたはそれが、マングースプレーンJSオブジェクトをない期待だとして FinishedGameコンストラクタに渡す前 gametoObject()を呼び出す必要が
console.log('finding ', gameId); 
PlayingGame.findById(gameId, function(err, game) { 
    if (err) { 
     console.log(err); 
     throw 'Problem finding game when closing'; 
    } 

    console.log(game); 
    // if game found, move PlayingGame to FinishedGame emit game closed to room 
    if (game) { 
     console.log('Saving game to finished games'); 
     var finishedGame = new FinishedGame(game); 
     finishedGame.save(function(err) { 
      if (err) throw 'Problem saving finished game when moving playing game to finished game'; 
      console.log('Successfuly saved to finish game'); 
      game.remove(function(err) { 
       if (err) throw 'Problem removing from playing games'; 

       socket.leave('game:' + gameId); 
       // send message to room that the game has been closed 
       io.to('game:' + gameId).emit('game closed'); 
      }); 
     }); 
    } 

}); 
+0

おそらく、 'game'はidによって見つからないでしょうか?コンソールで 'ゲームを完成したゲームに保存する'メッセージが表示されますか? – alexmac

+0

これは@JohnnyHKに投稿しました。回答を投稿すると選択できます –

答えて

0

docインスタンス。

そうにその行を変更:はい、私はジョニーの答えに同意してい

var finishedGame = new FinishedGame(game.toObject()); 
0

。 を使用することもできます。var gameClone = JSON.parse(JSON.stringify(game)); var finishedGame =新しいFinishedGame(gameClone);

関連する問題