我正在尝试将一个数据数组插入到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事件(标题,值,其他)VALUES([“newData”,2])
我只需要删除[]方括号([“newData”,2]).
我该怎么做?此外,如果有更好的方法将数据插入sqlite即时通知建议.谢谢
解决方法
JSON.stringify(dataArray)将始终返回方括号,因为dataArray的类型为array.相反,您可以对数组的每个元素进行字符串化,然后用逗号分隔它们.
dataArray = dataArray.map(function(e){ return JSON.stringify(e); }); dataString = dataArray.join(",");
然后
["newData",2]
变
"newData",2
附录:请不要尝试手动替换()括号,因为可能有一天括号以字符串形式进入阵列.例如[“请参见参考文献[1]”,2]