hmm: Request Error

Beitrag lesen

danke!

so gehts:

    var SQL_INSERT_MITARBEITER = "insert into mitarbeiter (name) select $name where not exists (select 1 from mitarbeiter where name = $name );";
    var SQL_SELECT_USER_MITARBEITER_ID = "select user_id, mitarbeiter_id from user, mitarbeiter where user.email = $email and mitarbeiter.name = $name;";
    var SQL_INSERT_USER_MITARBEITER = "insert into user_mitarbeiter (user_id, mitarbeiter_id) select $user_id, $m_id where not exists (select 1 from user_mitarbeiter where user_id = $user_id and mitarbeiter_id = $m_id);";
    var SQL_INSERT_SKILL = "insert into mitarbeiter_skill (mitarbeiter_id, skill, subskill, nivau) values ($m_id, $skill, $subskill, $nivau);";
    var SQL_UPDATE_SKILL = "update mitarbeiter_skill set nivau=$nivau where mitarbeiter_id = $m_id and skill = $skill and subskill = $subskill;";
    
    this.generateOneUpdate = function(email, data) {
       var db = new sqlite3.Database(dbRef);
    
       var pro = function() {
           new Promise(function(resolve, reject) {
        
            var st = db.prepare(SQL_INSERT_MITARBEITER);
            
          st.run({ $name: data.name },
                 function(err) {
                    if (err) {
                       reject({ success: false, dbError: err, msg: "msg1" });
                    }
                    else {
                       resolve();
                    }
                 });
        st.finalize();
       })
       .then(function() {
          return new Promise(function(resolve,reject) {
              
              var st = db.prepare(SQL_SELECT_USER_MITARBEITER_ID);
              
             st.get({ $email: email, $name: data.name },
                    function(err, row) {
                       if (err)
                          reject({ success: false, dbError: err, msg: "msg2" });
                       else
                          resolve(row);
                    });
            st.finalize();
          });
       })
       .then(function(umaRow) {
            if (umaRow == null) {
             reject({success: "msg2"});
            } else {
             return new Promise(function(resolve, reject) {
                 
                 var st = db.prepare(SQL_INSERT_USER_MITARBEITER);
                 
                st.run({ $user_id: umaRow.user_id, $m_id: umaRow.mitarbeiter_id },
                       function(err) {
                          if (err)
                             reject({dbError: true, err: err, msg: "msg3"});
                          else
                             resolve(umaRow);
                       });
                st.finalize();
            });
            }
       })
       .then(function(umaRow) {
            if (umaRow == null) {
             reject({success: "msg4"});
            } else {
             return new Promise(function(resolve, reject) {
                 
                 var st = db.prepare(SQL_UPDATE_SKILL)
                 
                st.run(
                       { $m_id: umaRow.mitarbeiter_id, $skill: data.skill, $subskill: data.subskill, $nivau: data.nivau},
                       function(err) {
                          if (err)
                             reject({dbError: true, err: err, msg: "msg5"});
                          else
                             resolve(umaRow);
                       });
                st.finalize();
            });
            }
       })
       .then(function(umaRow) {
           if (umaRow == null) {
             reject({success: "msg6"});
            } else {
             return new Promise(function(resolve, reject) {
                 
                 var st = db.prepare(SQL_INSERT_SKILL);
                 
                st.run(
                       { $m_id: umaRow.mitarbeiter_id, $skill: data.skill, $subskill: data.subskill, $nivau: data.nivau },
                       function(err) {
                          if (err)
                             reject({dbError: true, err: err, msg: "msg7"});
                          else
                             resolve(umaRow);
                       });
                st.finalize();
            });
            }
       })
       .catch(function(err) {
          if (err.success) return;
          if (err.dbError) {}
          else if (err.msg) {} 
       });
       }
       
       pro();
       db.close();
    }

ich werd mir jetzt das löschen vornehmen.

idee:

ich speichere alle mitarbeiter_ids die zur user_id gehören vor aufruf von generateoneUpdate in einem arrray old_m. im anschluss führe ich die funktion generateOneUpdate aus und speichere alle neuen mitarbeiter_ids in einem array aktuell_m. danach lösche ich alle daten die zu den mitarbeiter_ids aus old_m gehören und die nicht in aktuell_m vorkommen.

übrigens:

manchmal muss ich die seite zweimal laden damit mir die daten die ich haben will vom server aus der db ausgelesen und an den client geschickt wurden. woran liegt das?