我几乎已经建立了一个应用程序供用户获取积分,他们每获得10积分就应该获得奖杯。奖励积分是整数,奖杯是一个数组。我想在用户付款时增加奖励积分,同时如果更新后的现有积分为10或20或30等,则同时进行验证以推送奖杯。我已经以某种方式使用普通js而不使用push(仅使用math.floor()在.exec()函数内部设置numoftrophies),但是在user.save()上我还有其他问题。我想改变它:
User.findById(req.body.userID).exec(function(err, user){
if (err){throw err;}
user.rewardPoints = user.rewardPoints + 1;
let trophyNumbers = Math.floor(user.rewardPoints / 10)
user.trophies = trophyNumbers;
user.save();
})
类似这样:
User.update({ _id: req.body.userID },
{
$inc: { rewardPoints: 1 },
$push: {
trophies: {
trophy: new Date(),
trophyNum: Math.floor(rewardPoints / 10)
}
}
})
.exec(function (err, res) {
if (err) { throw err; }
//trophy must be added every 10 points
console.log('points saved');
});
我如何获得奖杯$ push中现有的奖励积分?如果有人可以帮助我,我将非常感激。
答案 0 :(得分:1)
尝试一下:
User.findById(req.body.userID).exec(function (err, user) {
if (err) { throw err; }
let newRewardPts = user.rewardPoints + 1;
User.update({ _id: req.body.userID },
{
$inc: { rewardPoints: 1 },
$addToSet: {
trophy: new Date(),
trophyNum: Math.floor(newRewardPts / 10)
}
})
.exec(function (err, res) {
if (err) { throw err; }
//trophy must be added every 10 points
console.log('points saved');
});
})