[英]Group by id and get order by total count in mongoose express node js
[英]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.