【问题标题】:Get total amount available with Mongoose and Express使用 Mongoose 和 Express 获取可用总金额
【发布时间】:2022-02-05 11:09:47
【问题描述】:

在我的应用程序中,我注册了金额的输入和输出,我需要在 MongoDB 中注册这些移动。

在进行新的入场或离场金额时,我需要注明入场或离场金额以及可用金额。我需要经典的输入时加法运算和输出时减法运算,还需要通过输入加法或输出减法来获得框中可用的数量。

我正在使用 $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 );
}

这是我的模特:


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']
    }
  }  
);

感谢您的帮助。

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    如果您希望它返回更新的结果,则传递 {new: true} https://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate

    【讨论】:

    • 我需要的是获取可用数量:amountAvailable: ...
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多