Здесь необходимо иметь в виду несколько вещей.
Когда вы запускаете сервер, переменные типа arr
сохраняются в памяти только до тех пор, пока сервер работает.Изменения в значениях переменных только изменят то, что находится в памяти - это не обновит то, что находится в вашем реальном коде.Когда вы останавливаете свой сервер, значения переменных высвобождаются из памяти.Если сервер будет запущен снова, эти переменные снова будут иметь любое начальное значение, которое вы им дали.
Как правило, если вы хотите сохранить ваши данные, вам нужно записать их и прочитатьэто из базы данных или другого хранилища данных (например, Redis).Вы также можете читать / записывать файлы напрямую (см. на этой странице для общего обзора того, как сделать это в узле).
Кроме того, важно также помнить, что массивметоды типа filter
и map
не изменяют исходное значение массива, к которому они вызваны.
const array = [1, 2, 3, 4]
array.map(item => item * 2)
console.log(array) // still shows [1, 2, 3, 4]
array.filter(item => item > 3)
console.log(array) // still shows [1, 2, 3, 4]
Если вы хотите, чтобы исходное значение изменилось, вам нужно сделать что-то вроде этого:
let array = [1, 2, 3, 4] // use let since our value will not be *constant*
array = array.map(item => item * 2)
console.log(array) // now shows [2, 4, 6, 8]
array.filter(item => item > 3)
console.log(array) // now shows [4, 6, 8]
Вы также можете связать свои методы следующим образом
array = array.map(item => item * 2).filter(item => item > 3)
Собрав все это вместе, если вы хотите, чтобы ваш распознаватель просто читал и записывал из файла, это выглядело бы примерно так:
const fs = require('fs')
const updateFooFunc = ({ id, foo }) => {
// assuming foo.json exists
const valueFromFile = JSON.parse(fs.readFileSync('./foo.json'))
const newValue = valueFromFile.map(each => {
if (each.id === id) each.foo = foo
return each
})
fs.writeFileSync(JSON.stringify('./foo.json', newValue))
// "find" is a little better than "filter" for what you're doing
return newValue.find(each => each.id === id)
}