SQLデータベースに行を挿入するのに問題があります。オブジェクトの配列をjavascriptのSQLテーブルに変換したいと思います。
次のコードは、配列の最初のオブジェクトのみを追加します。私はstackoverflowや他の場所で見つけたすべてを試しましたが、動作させることができません。
どんな助けでもいただければ幸いです。ありがとう。
for (var i = 0; i < arr.length; i++) {
db.save({key:i+"", value:arr[i]}, function(e){
});
}
更新1:mathecの例に変更し、問題を少し絞り込みました。
挿入される行数は、挿入されるオブジェクトのサイズによって異なります。つまり、各オブジェクトの処理にかかる時間と関係があります。
この問題を回避するにはどうすればよいですか?ありがとう。
アップデート2:
以下のRobertYoungの提案を参考にして、自己完結型の例を含めました。
以下の例では、最初の5つの要素のみを挿入しています。テストキーの単語テキストの一部を削除して、「単語」が1回だけ表示されるようにすると、10個の要素が挿入されます。これで、各オブジェクトの処理にかかる時間と関係があると確信しています。
<html>
<head>
<script src="jquery.js"></script>
<script src="lawnchair.js"></script>
<script type='text/javascript'>
var db = "";
var arr = [];
arr.push({name:"a1", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a2", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a3", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a4", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a5", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a6", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a7", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a8", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a9", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a10", test:"word word word word word word word word word word word word word word "});
arr.push({name:"a11", test:"word word word word word word word word word word word word word word "});
$(function() {
db = new Lawnchair({table:'t50'}, function(e){
for ( i = 0; i < arr.length; i++) {
(function(i) {
add_row(i);
}(i));
}
});
});
function add_row(i) {
db.save({key:i+"", value:arr[i]}, function(e){
});
}
</script>
</head>
<body>
</body>
</html>
更新3:私はRobertの提案したコードを使用し、3つの小さな要素で機能する次のコードを思いつきました。そこで、最初の要素を変更して、他の要素よりも大きくしてテストしました。最初の要素は追加されず、最後の2つは追加されました。アレイの処理に時間制限はありますか?
<html>
<head>
<script src="jquery.js"></script>
<script src="lawnchair.js"></script>
<script type='text/javascript'>
var arr = [];
var db = "";
$(function() {
db = new Lawnchair({table:'t51'}, function(e){
arr=[{key:"k1", value:"v1. Because the contents of this element are larger than the others it will not be added for some reason. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. "}
,{key:"k2", value:"v2"}
,{key:"k3", value:"v3"}]
db.batch(arr, function () {
db.all(function (recs) { for (r in recs) {console.log(recs[r].key +"| "+ recs[r].value) } });
});
});
});
</script>
</head>
<body>
</body>
</html>