Я в замешательстве.
Иногда, когда мой веб-интерфейс получает данные, он смешивает данные между объектами, и мне кажется, что глобальный объект в файле на самом деле является постоянным.
Вот базовая раскладка кода
handlers.js
const something = require('./otherfile')
let handlers ={}
handlers.customers = function (data, callback) {
let acceptableMethods = ['post'];
if (acceptableMethods.indexOf(data.method) > -1) {
handlers._customers[data.method](data, callback);
} else {
callback(405);
}
};
handlers._customers = {}
handlers._customers.post = async function (data, callback) {
customer.new(data);
callback(200, 'success')
}
otherfile.js
let contacts_list = [];
let accountData = {};
module.exports = something = {
new: {
dostuff: async function (data) {
// update and reference global objects here..
accountData.name = data.name;
accountData.otherProperty = await somefunction(data.prop)
}
}
}
Я ожидал, что, поскольку он требует экспортируемого модуля, каждый раз, когда он будет вызывать экспортируемый модуль, он будет рассматриваться как его собственный объект, однако, кажется, что объект не обрабатывается как уникальный и вместо этого перезаписывается в часть и «случайно». Это говорит мне о том, что я могу экспортировать мутирующий объект, такой как массив, в файлы
Прав ли я в том, что глобальный объект сохраняется в нескольких запросах?
Повлияет ли установка глобала в объекте экспорта на поведение этого объекта каким-либо образом? В этом случае я не хочу, чтобы эти данные мутировали.
Заранее благодарим за вашу конструктивную критику и рекомендации :)