javascript - 您如何访问 mongoose 查询中的现有值?
问题描述
几乎我已经为用户构建了一个应用程序来获得积分,每 10 分他们应该获得一个奖杯。RewardPoints 是整数,Trophies 是一个数组。我想在用户付款时增加奖励积分,同时如果更新后的现有积分为 10 或 20 或 30 等,则进行验证以推送奖杯。我以某种方式使用普通 js 而不使用推送(简单地使用math.floor() 设置 numoftrophies) 在 .exec() 函数中,但我在 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 of trophies 中现有的奖励积分?如果有人可以提供帮助,我将不胜感激。
解决方案
尝试这个:
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');
});
})
推荐阅读
- arduino - 继电器 NC NO 引脚是否有不同的容量?
- angular - 对数据库的全局访问不起作用
- ssl - 从多个受信任的 CA 提供商处请求 ssl 证书是否会产生负面影响?
- sql - 如何将子查询结果(具有嵌套连接)与另一个表连接?
- vb.net - 嵌套列表/列表集合
- java - 出现键盘时 ScrollView 不起作用
- javascript - 如何将数据从一个html页面传递到另一个?
- python - 自定义 Spacy NER 模型的总体 F 分数与单个实体 F 分数之间的巨大差异
- python - 有没有办法让这个字符串减少到 3 个单词?
- ffmpeg - FFMPEG如何在视频拼接时添加虚拟音频