无法使用mongoose将计算值插入数据库

时间:2018-04-29 09:43:18

标签: node.js mongodb express mongoose

我对node.js很新,并且正在建立一个结算网络应用程序。但在添加帐单部分,我无法将计算的总价格插入数据库。我需要在单击“提交”按钮后计算价格值,然后将该值与其他值一起插入数据库。即使我的计算是正确的,我总是在价格下的DB中获得值'0'。

这是我的代码。

这是我的帐单架构

var bill = new Schema({
name:{type: String, required: [true, '{PATH} is required']},
cname: {type: String, required: [true, '{PATH} is required']},
address: {type: String, required: [true, '{PATH} is required'] },
city: {type: String, required: [true, '{PATH} is required'] },
postal: {type: Number, min: [0, 'Can not be a negetive value'], required: [true, '{PATH} is required']},
mobile: {type: Number, min: [0, 'Can not be a negetive value'], required: [true, '{PATH} is required']},
email: {type: String, required: [true, '{PATH} is required'] },
date: {type: Date, required: [true, '{PATH} is required'] },
product: {type: String, required: [true, '{PATH} is required'] },
//quantity: {type: Number, min: [0, 'Can not be a negetive value'] },
CGST: {type: Array},
SGST: {type: Array},
price: {type: Number}
});

这是在route.js中将请求发送给控制器。

router.post('/addbill', indexController.saveBill);

这在控制器中。

saveBill: function(request, response) {
    var loginUser = request.session.user;
        var arr = [];
        var cgst = [];
        var sgst = [];
        var price = 0;
        arr = request.body.product;
        for(var i = 0; i<arr.length; i++){
            var query = Product.findOne({ pname: arr[i] });
            query.select('sell CGST SGST');
            query.exec(function (err, product){
                var tempPrice = product.sell;
                tempPrice = tempPrice + ((tempPrice * (product.CGST + product.SGST)) / 100);
                price = price + tempPrice;
                cgst[i] = product.CGST;
                sgst[i] = product.SGST;
                if (err) return handleError(err);
                console.log(price);// This printing the right results
            });
        }
        console.log("The Final Price: " + price);// 0
        console.log("The CGST: " + cgst);// Blank
        console.log("The SGST: " + sgst);// Blank
        var bill = new Bill({
            name: request.body.name,
            cname: request.body.cname,
            address: request.body.address,
            city: request.body.city,
            postal: request.body.postal,
            mobile: request.body.mobile,
            email: request.body.email,
            date: request.body.date,
            product: request.body.product,
            price: price,
            CGST: cgst,
            SGST: sgst
        });
        var error = bill.validateSync();
        if (error) {
            console.log(error);
            response.render('dashboard', {message: error, successMessage: '', userLoggedIn: loginUser});
        } else {
            bill.save(function (err) {
                console.log("Price from DB: " + bill.price);// 0
                if (err) {
                    // response.render('addemp', {message: 'OOPS something went wrong !!! Please try again', user: loginUser});
                    response.render('dashboard', {message: err, successMessage: '', userLoggedIn: loginUser});
                } else {
                    //response.redirect('/addemp');
                    response.render('dashboard', {successMessage: 'New Bill is successfully generated.', message: '', userLoggedIn: loginUser});
                }
            });
        }
}

这是数据库中的json文件

{
"_id": {
    "$oid": "5ae591d36e2c9d1c39f159a9"
},
"CGST": [],
"SGST": [],
"name": "Ayan Das",
"cname": "Alliance Broadband",
"address": "15, Bidyayatan Sarani",
"city": "Kolkata",
"postal": 700035,
"mobile": 7003247631,
"email": "kenny.s@gmail.com",
"date": {
    "$date": "2018-04-29T00:00:00.000Z"
},
"product": "Redmi note 5 (black, 64Gb),Honor 9 Lite (Sapphire Blue, 32 GB)  (3 GB RAM),ACER ASPIRE V5-471p",
"price": 0,
"__v": 0

}

我想我错过了一些我需要做的事情才能让它发挥作用。 Mongoose文档对我来说是压倒性的,我确实从那里尝试了一些东西,但没有工作。没什么帮助会很有帮助。

0 个答案:

没有答案