簡體   English   中英

使用 Mongoose 和 Express 獲取可用總量

[英]Get total amount available with Mongoose and Express

在我的應用程序中,我注冊了金額的輸入和輸出,我需要在 MongoDB 中注冊這些動作。

在進行新的進入或退出金額時,我需要注明進入或退出的金額以及可用的金額。 我需要經典的加法運算,當它是輸入時,當它是 output 時,我還需要通過輸入加法或 output 減法來獲得框中可用的數量。

我正在使用 $inc 注冊這些動作來設置數量,但我不知道如何直接從 Mongoose 的查詢中獲得可用數量的加減。 這是我的代碼:

const newItem = async (req, res = response ) => {
const pettyCashId = req.params.id;
const type = req.params.type;

    let incomeAmount = 0;
    let expenseAmount = 0;

    if( type === 'income'){
        incomeAmount = req.body.incomeAmount;
        expenseAmount = 0;
    }

    if( type === 'expense'){
        expenseAmount = req.body.expenseAmount;
        incomeAmount = 0;
    }

    const itemToPush = {
        concept: req.body.concept,
        incomeAmount: incomeAmount,
        description: req.body.description,
        expenseAmount:expenseAmount,
        'createdBy':{
            uid: req.user._id,
            username: req.user.username,
        }
    };


    let pettyCashItem = await PettyCashItems.findOneAndUpdate({ 'pettyCashId': pettyCashId },
        {
            $inc: { 
                totalIncomeAmount: incomeAmount, 
                totalexpenseAmount: expenseAmount,
                amountAvailable: ...
             },
            $push: { 
                'items': {
                  $each: [itemToPush],
                }
            }
        },{ new: true }
    );

    res.json ( pettyCashItem );
}

這是我的 Model:


const PettyCashItemsSchema = Schema (
  {
    pettyCashId:{
        type: Schema.Types.ObjectId,
        ref:'PettyCash',
        required: [true, 'La Caja Chica es Obligatoria']
    },
    user:{
        type: Schema.Types.ObjectId,
        ref:'Users',
        required: [true, 'El Usuario es obligatorio']
    },
    item: {
        type: Number,
        unique: true
    },
    totalIncomeAmount: {
        type: Number,
        maxlength:50,
        default:0
    },
    totalexpenseAmount: {
        type: Number,
        maxlength:50,
        default:0
    },
    amountAvailable: {
        type: Number,
        maxlength:50,
        default:0
    },
    items:[{
        concept: {
            type: String,
            maxlength:50,
            required: [true, 'El Concepto es obligatorio']
        },
        incomeAmount:{
            type: Number,
            maxlength:50,
            default:0,
            required: [true, 'El Ingreso es obligatorio']
        },
        expenseAmount:{
            type: Number,
            maxlength:50,
            default:0,
            required: [true, 'El Egreso es obligatorio']
        },
        description: {
            type: String,
            maxlength:50,
            required: [true, 'La Observación es obligatoria']
        },
        status: {
            type: Boolean,
            default: true,
            required: [true, 'El Estatus es obligatorio']
        },
        createdAt: {
            type: Date,
            default: Date.now
        },
        createdBy:{
            uid:{
                type: String,
                required:true
            },
            username:{
                type: String,
                required:true
            },
    }],
    status: {
        type: Boolean,
        default: true,
        required: [true, 'El Estatus es obligatorio']
    }
  }  
);

謝謝你的幫助。

傳遞 {new: true} 如果您希望它返回更新的結果https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM