Why might one of my Mongoose DB schemas be being "cast to undefined" when instances of it are placed in a second schema?

I have created a Mongoose DB schema called Game, and a second called Player which contains an array of said Game schema objects. When I run the line player.games = [ game ]; shown in the app.js snippet below, I get the following error:

Cast to undefined failed for value “{ gameID: 551175ee7a81c2c10c000002, points: 10 }” at path “games”

What am I doing wrong, please?

app/models/Game.js (entire file):

var mongoose = require( "mongoose" );
var Schema   = mongoose.Schema;

var GameSchema = new Schema({
    _id :    false,
    id :     false,
    gameID : Schema.ObjectId,
    points : Number
});

module.exports = mongoose.model( "Game", GameSchema );

app/models/Player.js (entire file):

var mongoose = require( "mongoose" );
var Game     = require( "../models/game" );
var Schema   = mongoose.Schema;

var PlayerSchema = new Schema({
    socialID : Number,
    games :    [ Game ] 
});

module.exports = mongoose.model( 'Player', PlayerSchema );

app.js (snippet):

router.route( '/players' ).post( function( req, res )
{
    var game = new Game();
    game.gameID = req.body.gameID;
    game.points = req.body.points;

    var player = new Player();
    player.socialID = req.body.socialID;
    player.games = [ game ];

    player.save(... etc.

chridam, thank you. The solution you suggested did not work,^ but by making some small adjustments to it I made it work. I wonder whether you could suggest whether my small adjustments are an acceptable solution, or a nasty fudge, or even some third etc. option please?

^ was getting "TypeError: object is not a function" at "var game = new Game()"

The adjustment was basically to add a Wrapper model for game.js

Edited game.js:

var mongoose     = require( 'mongoose' );
var Schema       = mongoose.Schema;

var Schema = new Schema({
    _id :    false,
    id :     false,
    gameID : Schema.ObjectId,
    points : Number
});

module.exports = mongoose.model( 'Game', Schema );

Additional game_wrapper.js

var Game = require( '../models/game' );
module.exports = Game.Schema;

Edited player.js:

var mongoose    = require( 'mongoose' );
var GameWrapper = require( '../models/game_wrapper' );
var Schema      = mongoose.Schema;

var Schema = new Schema({
    socialID : Number,
    games :    [ GameWrapper ]
});

module.exports = mongoose.model( 'Player', Schema );

Edited app.js:

var Player = require( './app/models/player' );
var Game   = require( './app/models/game' );

router.route( '/players' ).post( function( req, res )
{
    var game = new Game({
        gameID: req.body.gameID,
        points: req.body.points
    });

    var player = new Player({
        socialID: req.body.socialID,
        games: [ game ]
    });

    player.save(...)
}

You are passing a Game model into the parent schema definition PlayerSchema rather than a GameSchema schema object. In your GameSchema module app/models/Game.js, change it to:

var mongoose = require( "mongoose" );
var Schema   = mongoose.Schema;

var GameSchema = new Schema({
    _id :    false,
    id :     false,
    gameID : Schema.ObjectId,
    points : Number
});

module.exports = GameSchema;

Then change your PlayerSchema definition to:

var mongoose = require( "mongoose" );
var GameSchema     = require( "../models/game" );
var Schema   = mongoose.Schema;

var PlayerSchema = new Schema({
    socialID: Number,
    games: [GameSchema] 
});

module.exports = mongoose.model( 'Player', PlayerSchema );

In your route, wrap up your request object into the schema:

router.route( '/players' ).post( function( req, res )
{
    var game = new Game({
        gameID: req.body.gameID,
        points: req.body.points
    });

    var player = new Player({
        socialID: req.body.socialID,
        games: [game]
    });

    player.save(...)
}