как сохранить добавление числа к переменной в базе данных в ejs - PullRequest
0 голосов
/ 10 июля 2019

У меня есть переменная 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, потому что оно не хранит предыдущие дополнения. Как это исправить? Я знаю, что форма редактирования не подходит для этого.

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

обнаружил, что у mongodb, который я использую для базы данных, есть оператор приращения $inc, который решил проблему. см. полное описание

0 голосов
/ 10 июля 2019

как правило, у вас есть два пути.

  1. когда пользователь вводит значение, просто обновите значение до поля NewAdded в mongo db & refresh.если вы не обновляете, значение не изменилось вновь добавлено, потому что запрос к серверу уже завершен.

2.Установите значение обновления на сервере.но, не перенаправляя, вы можете контролировать дом напрямую.используйте 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> 
...