【问题标题】:how to keep adding a number to a variable in the database in ejs如何在ejs中继续向数据库中的变量添加数字
【发布时间】:2019-07-16 23:04:58
【问题描述】:

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

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

这是架构 sn-p

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,则新数量应为32,但它显示22,因为它不存储以前的添加。我如何解决这个问题?我知道编辑表单不适合这个。

【问题讨论】:

    标签: node.js database mongodb ejs calculation


    【解决方案1】:

    一般来说,有两种方法。

    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> 
    

    【讨论】:

    • 这可能有效,但我不想混淆。喜欢添加jquery
    【解决方案2】:

    发现我用于数据库的 mongodb 有一个增量运算符 $inc 解决了这个问题。查看全文description

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2019-08-08
      • 2012-07-18
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多