Сохраняются значения переменных
Добрый день
Подскажите пожалуйста как можно исправить такое: 1. запускается сервер на node js, делаются пост запросы, выполняется скрипт 2. до выполнения переменная не объявлена, после выполнения скрипта она становится равна допустим: "3,21215;" 3. при следующем запрос переменная будет равна уже: "3,21215; 4,26215;" Просто прибавляются значения Объявлять переменные не вариант = их очень много, и очень долго выбирать нужные. Тоесть нужно чтобы "перезапускался" сервер при каждом запросе, у каждого исполнения скрипта - его значения, без сохранения других предыдущих. Как такое можно реализовать? |
Цитата:
максимально подробно объяснить хотел я понимаю что нужно заново "инициализировать"(хрен знает как верно) переменные |
davisaliw,
Состояние и данные приложения обычно хранятся в базе данных. Если уж данных совсем мало, то можно и в обычные файлы записывать. Если у вас сложные данные с зависимостями, то берите реляционную БД (mysql, oracle, postgresql and etc...), если совсем простые, то key-value хранилище. Вы можете вообще "не хранить" переменную непосредственно в nodejs, а всегда ходить в БД, чтобы взять или изменить её значение. Все зависит от решаемой задачи. Вы в своем вопросе не пишите какую именно задачу вы пытаетесь решить, поэтому дать вам правильное решение просто невозможно. |
Цитата:
Я так понимаю проблема в том, что переменная не объявлена "var ..." А просто используется, без объявления Поэтому, если несколько раз использовать скрипт, то она сохраняет все значения которые получила: После первого выполнения скрипта: "3,14124;" После второго "3,14124;4,56123;" После третьего: "3,14124;4,56123;5,151173" и т.д. После перезапуска сервера и первого выполнения: "3,14133;" .... и т.д. И таких переменных более 50 штук. Каждый запрос выполняется отдельно(новые пост запросы); Cуть скрипта в вычислении финальной строки, а из за того что сохраняются значения переменных - она уже неверная после первого выполнения. Мне нужно чтобы каждое выполнения скрипта было как новое, без влияния на него предыдущих. Вот так, например, "объявляется" и переменной присваивается значение ( без var ): check.cn_el = check.cn_el + z; |
А check в вашем коде это синглтон?
Ну пишите тогда внутри функции которая его использует так: check.cn_el = z |
Цитата:
нужно что то глобальное на все код, мб взять всё в функцию |
Пример вашего кода пожалуйста напишите, из ваших постов вообще не понятно что вы имеете ввиду.
|
Цитата:
я ошибся, сказав что она не объявлена - объявлена, но все равно какой то баг; Получается так: К каждому новому запросу, в check.cn_el прибавляется новое значение, но старое при этом не затирается - а нужно только новое(новые если цикл). Старое значение убирается только перезапуском сервера. Я взял check.cn_el как пример. Там много переменных, с которыми происходит тоже самое |
var check = {
cn_el: ''
};
function hardWork(n /* string */) {
check.cn_el = '';
for (var el of n) {
check.cn_el += el;
}
return check.cn_el
}
console.log(hardWork('234')); // '234'
console.log(check) // {cn_el: '234'}
console.log(hardWork('345')); // '345'
console.log(check) // {cn_el: '345'}
console.log(hardWork('456')); // '456'
console.log(check) // {cn_el: '456'}
|
Цитата:
Ладно, у меня получилось сделать: script.js - главный:
var http = require('http'),
util = require('util'),
url = require('url'),
hash = require('./hash');
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var Y = {
alpha: null,
beta: null,
gamma: null
}
hash.test(Y);
});
server.listen(8080);
hash.js - второй.
var t4q ={
'H5I': 0,
'N40': "",
},
cf = {
doe_cnt: t4q.H5I,
doact: t4q.N40,
chknull: function (q) {
return (null == q) ? -1 : q;
},
getFloatVal: function (Y) {
if (cf.chknull(Y) != -1 && !isNaN(Y)) {
var b = parseFloat(Y);
if (!isNaN(b)) return b.toFixed(2);
}
return -1;
},
cdoa: function (Y) {
if (Y) {
var v = cf.getFloatVal(Y.alpha),
h = cf.getFloatVal(Y.beta),
W = cf.getFloatVal(Y.gamma),
F = cf.doe_cnt + "," + v + "," + h + "," + W + ";";
cf.doact = cf.doact + F,
cf.doe_cnt++;
console.log(cf.doact);
}
}
};
function test(testobj){
cf.cdoa(testobj);
};
module.exports.test = test;
делаем несколько гет запросов: ![]() Что должно быть: ![]() Повторяю, в скрипте очень много переменных и с каждой работать не вариант. |
| Часовой пояс GMT +3, время: 10:17. |