我正在努力为我的大学论文项目开发一个后端,我正在为我的大学开发一个考勤系统。我的系统将处理已经在我的学院使用的时间表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中的引用。

10-02 08:24
查看更多