上传 csv 文件以触发 firestore 集合更新
uploading csv file to trigger firestore collection update
我正在尝试在管理面板中创建一个功能(使用 React 和 Antd 框架)。
我目前在 csv 文件中有大约 15000 ~ 20000 个用户信息。此 csv 文件会定期更新。由于我有一个非常大的列表,我正在考虑创建一个上传功能,管理员可以在其中上传定期更新的 csv 文件,以便将其转换为 JSON 并且仅将选定的字段存储到 firestore。这意味着每次我上传一个新文件时,所有 15000~20000 (26mb) 的数据记录都会被覆盖。 创建这种工作流效率低吗?这些数据有可能变大,所以我不可能手动更新它们。
谁能给我一些关于如何处理这种情况的建议。
浏览器允许上传 2 到 4 个(有些甚至更大)(GB) 的最大文件大小,因此您的文件并不大。
我以前曾经处理过这样的任务,可以说 antd
table 很容易。只有过滤器工作有点慢。
这是我做的一个例子
import React, {useState} from 'react';
import ReactDOM from 'react-dom';
const columns = [
/** Here was my columns */
]
const App = () => {
const [data, setData] = useState([]);
const handleUpload = (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = event => {
try {
const result = event.target.result;
setData(JSON.parse(result));
} catch (e) {
console.log(e)
}
}
reader.readAsText(file);
}
return (
<>
<input type="file" onChange={handleUpload}/>
<Table
columns={columns}
dataSource={data}
/>
</>
)
}
ReactDOM.render(
<App/>,
document.getElementById('root')
);
很高兴我的回答对您有所帮助:) 此致!
我正在尝试在管理面板中创建一个功能(使用 React 和 Antd 框架)。
我目前在 csv 文件中有大约 15000 ~ 20000 个用户信息。此 csv 文件会定期更新。由于我有一个非常大的列表,我正在考虑创建一个上传功能,管理员可以在其中上传定期更新的 csv 文件,以便将其转换为 JSON 并且仅将选定的字段存储到 firestore。这意味着每次我上传一个新文件时,所有 15000~20000 (26mb) 的数据记录都会被覆盖。 创建这种工作流效率低吗?这些数据有可能变大,所以我不可能手动更新它们。
谁能给我一些关于如何处理这种情况的建议。
浏览器允许上传 2 到 4 个(有些甚至更大)(GB) 的最大文件大小,因此您的文件并不大。
我以前曾经处理过这样的任务,可以说 antd
table 很容易。只有过滤器工作有点慢。
这是我做的一个例子
import React, {useState} from 'react';
import ReactDOM from 'react-dom';
const columns = [
/** Here was my columns */
]
const App = () => {
const [data, setData] = useState([]);
const handleUpload = (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = event => {
try {
const result = event.target.result;
setData(JSON.parse(result));
} catch (e) {
console.log(e)
}
}
reader.readAsText(file);
}
return (
<>
<input type="file" onChange={handleUpload}/>
<Table
columns={columns}
dataSource={data}
/>
</>
)
}
ReactDOM.render(
<App/>,
document.getElementById('root')
);
很高兴我的回答对您有所帮助:) 此致!