导入的函数在运行开玩笑时没有做它应该做的事情



DATA STORE FILE:

let data = {
users: [],
channels: [],
};
// Use get() to access the data
function getData() {
return data;
}
// Use set(newData) to pass in the entire data object, with modifications made
function setData(newData) {
data = newData;
}
export { getData, setData };

clearV1()文件:

import { getData, setData } from './dataStore';

function clearV1() {
let data = {
users: [],
channels: [],
};
setData(data);
return {};
}
export { clearV1 };

当在另一个数据存储中运行clearV1()函数时,它不会清除数据存储。例如:authRegisterV1创建用户并将其添加到数据存储channelCreateV1创建一个通道并将其添加到数据存储

authRegisterV1('test1@gmail.com','test123','Firt','Last');
clearV1()
authRegisterV1('test2@gmail.com','test123','Firt','Last');
expected output: 
{
users: [
{
uId: 1,
email: 'test2@gmail.com',
password: 'test123',
nameFirst: 'Firt',
nameLast: 'Last',
handle: 'firtlast0',
permissionId: 2
}
],
channels: [],
}
wrong output:
{
users: [
{
uId: 1,
email: 'test1@gmail.com',
password: 'test123',
nameFirst: 'Firt',
nameLast: 'Last',
handle: 'firtlast',
permissionId: 1
},
{
uId: 2,
email: 'test2@gmail.com',
password: 'test123',
nameFirst: 'Firt',
nameLast: 'Last',
handle: 'firtlast0',
permissionId: 2
}
],
channels: [],
}

我相信clearV1()函数的实现是正确的,还有什么其他可能的原因会导致这个错误?我将所有用到的函数导入到测试文件中。

我认为您面临的问题是您在./dataStore内部创建了data,因此,它不存在于clearV1()文件中。另一种说法是,当您最初创建数据变量时,它是在./dataStore中创建的,并且只存在于那里。因此,它创建了一个新变量,而不是更新现有的变量。

另一个问题是,你正在尝试使用let data = [value]let在调用它的函数内部创建变量,忽略外部的任何变量。作为javascript的经验法则,当更新一个现有的变量时,使用[name] = [value]

如果你想了解更多,这里有关于import语句和let语句的MDN文档。

最新更新