我正在使用一个将数据插入数据库的小工具上的node.js和sqlite。问题开始是因为我不想知道数据是什么。
数据构造函数与此类似
EventFormData = function(){
this.table = 'event';
this.eventID = 0;
this.title = $('#Title').val();
this.Start_Date = $('#StartDate').val();
this.Start_Time = $('#StartTime').val();
this.End_Date = $('#EndDate').val();
this.End_Time = $('#EndTime').val();
this.Location = $('#Place').val();
this.Notes = $('#Notes').val();
};
所以每个表单我都需要添加的唯一代码就是这个表单的数据构造函数。这个构造函数是全局的,因为它在jade文件中,我需要它在其他地方。
现在dbtools.js如下:
dbtools = (function () {
var InsertData = function(data){
database.serialize(function(){
var dataArray = [];
var valueString = "", typeString = "";
for(var i = 2; i < Object.keys(data).length; i++){
if(i < Object.keys(data).length-1){
valueString += "?, ";
}else{
valueString += "?";
}
}
console.log(Object.keys(data));
database.all("INSERT into event ("+Object.keys(data)+") values("+valueString+" )", dataArray);
});
};
return {
InsertData: InsertData
};
})();
module.exports = dbtools;
我认为这会起作用,但Object.keys(数据)不能正常工作。 它返回:
eventFormData[table]
eventFormData[eventID]
...etc.
现在根据我的理解,Object.keys(data)应该返回:
table
eventID
...etc.
如果我执行相同的调用,但构造函数位于同一个文件中,它会执行我想要的操作。
EDIT 我调用dbtools.InsertData(data); 我需要dbtools的地方(主要是在router.post调用中)
我在这里做错了什么?