Angularjs 猫鼬推进子文档

Angularjs 猫鼬推进子文档,angularjs,mongoose,lodash,Angularjs,Mongoose,Lodash,我运行的是MEAN.js,在将新的子文档推入现有数据库条目时遇到了问题。到目前为止我所做的: 我有以下数据库架构: var GameSchema = new Schema({ title: { type: String, trim: true, required: 'Title cannot be blank', unique: 'Title must be unique' }, invitedPlayers

我运行的是MEAN.js,在将新的子文档推入现有数据库条目时遇到了问题。到目前为止我所做的: 我有以下数据库架构:

var GameSchema = new Schema({
    title: {
        type: String,
        trim: true,
        required: 'Title cannot be blank',
        unique: 'Title must be unique'
    },
    invitedPlayers: [{
        email: {
            type: String
        },
        resources: {
            wood: {
                type: Number,
                default: 0
            },
            stone: {
                type: Number,
                default: 0
            },
            gold: {
                type: Number,
                default: 0
            }
        }
    }]
});
mongoose.model('Game', GameSchema);
我想把新的条目推到新的层中。每当管理员填写带有用户邀请的表单并单击提交时,应用程序将使用以下方法:

// Invite new User
$scope.invite = function() {
    // Create new Game object
    var game = new AdminGamesService ({
        _id: $stateParams.gameId,
        invitedPlayers: $scope.player,
    });

    game.$update(function() {
        $location.path('admin/users');
    }, function(errorResponse) {
        $scope.error = errorResponse.data.message;
    });
};
并且它在服务器上运行(使用lodash):


但是这段代码覆盖了我之前邀请的玩家,只添加了一个新的:(我必须更改一些内容以在array invitedPlayers中推送条目,但我不知道是什么:)

问题是lodash\u扩展了覆盖数组,所以我对更新功能做了一些更改,现在它可以工作了:

exports.update = function(req, res) {
    var game = req.game;
    var invitedPlayers = game.invitedPlayers;
    if(req.body.invitedPlayers) invitedPlayers.push(req.body.invitedPlayers);
    game = _.extend(game , req.body);
    game.invitedPlayers = invitedPlayers;

    game.save(function(err) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.json(game);
        }
    });
};
exports.update = function(req, res) {
    var game = req.game;
    var invitedPlayers = game.invitedPlayers;
    if(req.body.invitedPlayers) invitedPlayers.push(req.body.invitedPlayers);
    game = _.extend(game , req.body);
    game.invitedPlayers = invitedPlayers;

    game.save(function(err) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.json(game);
        }
    });
};