我正在努力为我的大学论文项目开发一个后端,我正在为我的大学开发一个考勤系统。我的系统将处理已经在我的学院使用的时间表web应用程序生成的数据,通过该应用程序,我的系统将识别时间表中的讲课内容并对其进行考勤。
时间表应用程序有一个mysql后端,但我的应用程序有一个firebase后端。
到目前为止,我能够从mysql表中获取数据并将它们推送到firebase数据库中。但问题是每次我运行上述代码时,它都会再次将已经存在的数据推回去,这是有意义的。
但我想实现的是只添加所有数据一次,然后只添加新值或任何更新的值。
我该怎么处理?我知道,在推送数据之前,我必须增加更多的检查,但我真的很困惑我该如何应对这个障碍。
// Connection to MySql sever.
mysql = require('mysql');
con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "mrbs"
});
// Connection to Firebase.
firebase = require('firebase');
firebase.initializeApp({
serviceAccount: "./SICSR-d924e501f52d.json",
databaseURL: "https://sicsr-d4771.firebaseio.com"
});
let fetchRecords = function(sql) {
return new Promise (function(resolve, reject) {
con.query(sql, function (err , result){
if(err) reject(err);
resolve(result);
});
});
};
fetchRecords("SELECT start_time, end_time, room_id, timestamp, Program, Batch, Course, Semester, Faculty, Division FROM mrbs_entry").then(function(fromResolve){
Resultset = fromResolve;
setRoomName(Resultset);
//console.log(global);
}).catch(function(fromReject){
console.log(fromReject);
});
//set room_id to the room_name retrive and send it forward to firebase.
function setRoomName(value){
let objValue = value;
for(let i = 0; i<objValue.length; i++) {
con.query("Select room_name , id from mrbs_room where id = '" + objValue[i].room_id + "'", function (err, result2){
if (err) throw err;
let j =0;
while(j<result2.length){
roomName = result2[j].room_name;
if(roomName == null && objValue[i] == null){
// TODO add some code here.
} else {
objValue[i].room_id = roomName;
saveRecord(objValue[i]);
}
j++;
}
});
}
}
function saveRecord(data){
let Resultset = [];
Resultset = data;
feedDatainFirebase(Resultset);
}
function feedDatainFirebase(value){
var Resultset = value;
let ref = firebase.database().ref("Lecture");
ref.push({
course_name: Resultset.Course,
program_name : Resultset.Program,
room_number : Resultset.room_id,
start_time : Resultset.start_time,
end_time : Resultset.end_time,
teacher_name : Resultset.Faculty,
timestamp : Resultset.timestamp
});
}
最佳答案
如果你想从mysql数据库同步到firebase,你需要有一个某种类型的密钥,你可以在每个密钥中引用它来将记录绑定在一起。首先,我只查询要在mysql中同步的记录。然后,循环遍历它们,对于每一个,您都需要根据定义的键更新firebase中的引用。