如何在ejs中不断向数据库中的变量添加数字

时间:2019-07-09 22:29:51

标签: node.js database mongodb ejs calculation

我有一个变量quantity和另一个变量new quantity。每当用户输入new quantity时,都应将其添加到先前的数量总和中。

我有一个创建表单和一个编辑表单。 quantity字段位于创建表单上,而newlyAdded字段位于编辑表单上

这是架构片段

const	mongoose = require('mongoose'),	
		stocksSchema = new mongoose.Schema({
		name: String,
		number: Number,
		quantity: Number,
		newlyAdded: Number,
		sold: Number,
		newlySold: Number,
		balance: Number,
		description: String,
... 
ejs snippet
<% let justAdded = item.quantity + item.newlyAdded %>
        <td><%= justAdded %></a></td>

例如,如果quantity = 10和用户输入12的新数字应为22,并且如果再次添加10,则新的数量应为{{1} },而是显示32,因为它不存储先前添加的内容。我该如何解决?我知道编辑表单不适合此操作。

2 个答案:

答案 0 :(得分:0)

通常,您有两种方法。

  1. 当用户输入值时,只需将值更新为mongo db中的newAdded字段并刷新。如果您不刷新,则该值不会重新更改。已添加,因为请求Serer的请求已完成。

2。更新到服务器的值是相同的。但是,不是重定向,您可以直接控制dom。 使用jquery或javascript。

这是例如使用jquery的示例。

<input id="input" type="text" .. />
 <td><a id="val"><%= justAdded %></a></td>
...
<script>

var oldVal = Number('<%= item.quantity %>');

$("#input").on("propertychange change keyup paste input", function() {
    var currentVal = Number($(this).val());
    var newVal = oldVal + currentVal;
    if(currentVal == newVal) {
        return;
    }
    $("#val").text(newVal);
    oldVal = newVal;    
});

</script> 

答案 1 :(得分:0)

发现我用于数据库的mongodb具有增量运算符$inc,解决了该问题。查看完整的description