下面的代码尝试将商店的 .balance 属性设置为10。调用该路线时,所有功能均正常运行,并且没有发生错误。
但是,在运行该功能并查看刚刚更新的商店之后。它的 .balance 属性仍然为0?为什么是这样?当我在其他地方使用此语法更新某些内容时,它起作用吗?
下面是代码。
app.get("/:id/deductBalance/:amount", async function(req, res){
const id = req.params.id
const amount = req.params.amount
let updatedShop = {}
let shop = await Shop.findById(id)
let currentBal = shop.balance
console.log(currentBal)
updatedShop.balance = 10;
Shop.updateOne({id: id}, updatedShop, async function(err){
if(err){
console.log(err)
}
else{
console.log('changed shop bal')
}
})
return res.redirect("/"+id+"/restockItems/option")
})
下面是商店的猫鼬模式
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var shopSchema = new Schema ({
name: String,
categories: Array,
email: String,
password: String,
img: String,
itemCategories: Array,
manufacturers: Array,
status: String,
balance: Number
});
let Shop = module.exports = mongoose.model('Shop', shopSchema);
更新:在Shop.updateOne({id: id}
部分中,id
必须为_id
,因为mongo中的ID前面带有_。感谢您的帮助!
答案 0 :(得分:0)
尝试替换此部分:
Shop.updateOne({id: id}, updatedShop, async function(err){
if(err){
console.log(err)
}
else{
console.log('changed shop bal')
}
})
使用:
await Shop.updateOne({id: id}, updatedShop);