Почему документ магазина не обновляется с новым балансом?Узел + Мангуст Экспресс - PullRequest
0 голосов
/ 08 июля 2019

Приведенный ниже код пытается установить свойство shop .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, так как у идентификаторов в Монго есть _ перед ними. Спасибо за помощь, ребята!

1 Ответ

0 голосов
/ 08 июля 2019

Попробуйте заменить эту часть:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...