Angularjs 猫鼬推进子文档
我运行的是MEAN.js,在将新的子文档推入现有数据库条目时遇到了问题。到目前为止我所做的: 我有以下数据库架构: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
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);
}
});
};