私はsqliteデータベースの複数の列に挿入するデータの配列を取得しようとしていますが、これでほとんど機能しています:
function InsertData(dbData){
var valueArray = [], dataArray = [];
var values = Object.keys(dbData);
for(var key in values){
valueArray[valueArray.length] = values[key];
dataArray[dataArray.length] = dbData[values[key]];
}
console.log("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
dbData.database.serialize(function(){
dbData.database.run("INSERT INTO "+dbData.table+" ("+valueArray+") VALUES ("+JSON.stringify(dataArray)+")");
});
}
私のデータは次のように構成されています:
//app.js
function EventData(title, value, other){
this.title = title;
this.value = value;
this.other = other;
}
EventData.prototype = new dbtools.DBData(usuevents, 'event');
var thisEventData = new EventData('newData', 4, 2);
//dbtools.js
DBData = function(database, table){
this.database = database;
this.table = table;
};
console.logの出力INSERT INTO event(title、value、other)VALUES(["newData"、4,2]) [-]を削除するだけです([ "newData"、4,2])。どうすればいいですか?また、提案にオープンなSQLiteにデータを挿入するより良い方法がある場合。ありがとう
dataArray
は配列型であるため、JSON.stringify(dataArray)
は常に角括弧を返します。代わりに、配列の各要素を文字列化し、コンマで区切って結合することができます。
_dataArray = dataArray.map(function(e){
return JSON.stringify(e);
});
dataString = dataArray.join(",");
_
その後
_["newData",4,2]
_
なる
_"newData",4,2
_
補遺:ブラケットが文字列内の配列に入力される可能性があるため、ブラケットを手動でreplace()
から取り出そうとしないでください。例えば_["Please see ref[1]",4,2]
_
DrakesとS McCrohanに回答いただきありがとうございます。 .replace(/]|[[]/g, '')
にJSON.stringify(dataArray)
が追加されていることがわかりました
フルラインJSON.stringify(dataArray).replace(/]|[[]/g, '')
コードが意図を明確に表しているので、ドレイクの答えは私の個人的な選択です。しかし、代替案を示すには:
var strung = JSON.stringify(dataArray);
console.log(strung.substring(1,strung.length-1));