我正在为我的大学论文项目开发一个后端,我正在为我的大学开发一个考勤系统。我的系统将处理由我的大学中已经使用的时间表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
});
}
答案 0 :(得分:1)
如果您想要从mysql数据库同步到firebase,您需要拥有某种类型的密钥,您可以在每种密钥中引用这些密钥以将记录绑定在一起。我首先只查询要在mysql中同步的记录。然后,循环遍历它们,对于每一个,您将需要根据您定义的键更新firebase中的引用。