如何在ejs中向数据库中的变量添加一个数字

how to keep adding a number to a variable in the database in ejs

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

一般来说,你有两种方式。

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

2.update 到服务器的值相同。但是,不是重定向,您可以直接控制 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> 

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