【发布时间】:2016-04-08 13:08:42
【问题描述】:
我正在尝试将我的 CSV 数据上传到 Firebase,但它抛出了一个奇怪的错误。我对 JavaScript 不是很熟悉,所以这可能是问题的一部分。
这是我要上传的数据:
704,STANDARD,PARC PARQUE,PR,NOT ACCEPTABLE,17.96,-66.22,"Parc Parque, PR"
704,STANDARD,SECT LANAUSSE,PR,NOT ACCEPTABLE,17.96,-66.22,"Sect Lanausse, PR"
704,STANDARD,URB EUGENE RICE,PR,NOT ACCEPTABLE,17.96,-66.22,"Urb Eugene Rice, PR"
704,STANDARD,URB GONZALEZ,PR,NOT ACCEPTABLE,17.96,-66.22,"Urb Gonzalez, PR"
我没有使用任何花哨的东西来尝试上传文档,这似乎是以我想要的样式上传所有内容的最快方法:
<!DOCTYPE html>
<head>
</head>
<body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://cdn.firebase.com/js/client/2.4.2/firebase.js"></script>
<script type="text/javascript">
$(function () {
var myFirebaseRef = new Firebase("https://<firebasetag>.firebaseio.com/coordinates");
var onComplete = function(error) {
if (error) {
console.log('Synchronization failed: ' + error);
} else {
console.log('Synchronization succeeded');
}
};
$("#upload").bind("click", function () {
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
if (regex.test($("#fileUpload").val().toLowerCase())) {
if (typeof (FileReader) != "undefined") {
var reader = new FileReader();
reader.onload = function (e) {
var rows = e.target.result.split("\n");
for (var i = 0; i < rows.length; i++) {
var cells = rows[i].split(",");
myFirebaseRef.set({
[cells[0]]: {
zipcodetype: cells[1],
city: cells[2],
state: cells[3],
locationtype: cells[4],
latitude: cells[5],
longitude: cells[6],
locationttext: cells[7]
}
}, onComplete);
}
}
reader.readAsText($("#fileUpload")[0].files[0]);
} else {
alert("This browser does not support HTML5.");
}
} else {
alert("Please upload a valid CSV file.");
}
});
});
</script>
<input type="file" id="fileUpload" />
<input type="button" id="upload" value="Upload" />
</div>
</body>
<html>
这就是数据库中显示的全部内容:
它的作用是只上传一行,但“同步成功”总是打印在我的控制台中。
我希望它上传每一行,因为我的原始数据大约有 90,000 行长。帮忙?
【问题讨论】:
-
如果所有
cells[0]都等于704,你期望的结果是什么??? -
它只上传一行,而不是整个文档。当我用控制台打印替换 firebase 上传时,它会打印所有内容。关于我如何处理 firebase 调用的一些事情会阻止此代码中的大量上传
-
但是因为你总是设置相同的项目,覆盖任何前一个项目,704 === 704。我不是一个火力人,但你可能想推它:firebase.com/docs/web/api/firebase/push.html
-
呃....天哪,我才意识到这一点。感谢您向我指出这一点。我没有想到它直到最后都用新数据覆盖了保存。你知道对此有什么补救措施吗?上面写着“等到最后一次 firebase 调用完成后再继续”?
-
您可能不是白痴...很高兴您已修复它并感谢您发布相关答案。它对任何未来的读者都非常有帮助。
标签: javascript jquery csv firebase