我对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文档对我来说是压倒性的,我确实从那里尝试了一些东西,但没有工作。没什么帮助会很有帮助。