2016-04-03 12 views
1

Ich habe zwei Schemas, FinishedGame und PlayingGame. Beide Schemas sind identisch. Wenn ich ein Spiel schließe, möchte ich die PlayingGame in die FinishedGame Sammlung kopieren und dann die PlayingGame löschen. Der Code scheint momentan keinen Fehler auszulösen, fügt aber auch nichts zu FinishedGame hinzu. Wenn ich Shell öffne einen Lauf show collections sehe ich nur playinggames und system.indexes. Jede Hilfe wird sehr geschätzt.Mongoose, Speichern des Ergebnisses einer Suche scheint nichts zu tun

Heres des Code, der ausgeführt wird, wenn ich ein Spiel schließen mag:

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

Vielleicht wird 'Spiel' nicht von ID gefunden? Siehst du in der Konsole die Meldung "Spiel zu fertigen Spielen speichern"? – alexmac

+0

das funktionierte @JohnnyHK, wenn Sie die Antwort posten, kann ich es auswählen –

Antwort

0

Sie müssen toObject() auf game nennen, bevor es das FinishedGame Konstruktor wie es ein einfaches JS-Objekt erwartet, keinen Mungo doc-Instanz

So diese Zeile ändern:

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

ja, ich bin mit johny Antwort zustimmen. Sie könnten auch var gameClone = JSON.parse (JSON.stringify (Spiel)); var finishedGame = neues FinishedGame (gameClone);