应用程序未注册请求“DELETE”

时间:2017-05-10 16:34:46

标签: mysql angularjs node.js sql-delete

在我的网站上,我有类似的内容:

<div class="mdl-cell--4-col mdl-grid">
            <label class="mdl-cell--6-col">Liste administrateurs</label>
              <select class="mdl-cell--6-col" ng-model="adminselected" ng-options="admin for admin in listAdmins">
              </select>
          </div>
          <div class="mdl-cell--2-col mdl-grid">
            <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" style="float: right" layout-align="end center" ng-click="deleteAdmin()">Supprimer</button>
          </div>

listAdmins在控制器中通过以下方式进行管理:

- 使用身份验证进行初始化:

  forecastValue.authentification()
    .then(function(report) {
        $scope.currentName = report[0].informationUser.id_name;
          forecastValue.getAdmins($scope.currentName)
            .then(function(reports) {
                $scope.listAdmins = reports[0].listAdmins;
                console.log(reports[0].listAdmins);
                }).catch(function(err) {
                  $scope.listAdmins= [];
                  console.error('Unable to fetch forecast report: ' + err);
                  });

        }).catch(function(err) {
          $scope.currentName= '';
          console.error('Unable to fetch forecast report: ' + err);
          });

- 删除管理员的功能,它是在发布请求后在工厂部分传输的。

  $scope.deleteAdmin = function() {


      forecastValue.deleteAdmin($scope.adminselected)
       .then(function(report){
          console.log("Changes saved");
          $scope.adminmessage = "L'utilisateur "+ $scope.adminselected+" n'est plus administrateur";
        }).catch(function(err){
         console.error("Changes not saved");
        });

         forecastValue.getAdmins($scope.currentName)
            .then(function(reports) {
                $scope.listAdmins = reports[0].listAdmins;
                }).catch(function(err) {
                  $scope.listAdmins= [];
                  console.error('Unable to fetch forecast report: ' + err);
        });

};

在node.js代码中执行的MySQL请求是下一个:

function deleteAdmin(res, queryParams)
{

  connection.query("DELETE FROM safeplusdb.admin WHERE name=\""+(decodeURIComponent(queryParams.admindeleted))+"\";");


  res.send({
    state: "OK"
  });
}

因此,结果如下:

- 我使用软件Workbench检查数据库,数据被删除。

- 在网站上,没有注册,数据仍然在这里,即使我做F5或CTRL + F5。 进行更改的唯一方法是停止应用程序并使用命令“node server.js”重新启动它。

当我使用更新SQL方法时,我没有这样的问题。

如何解释?

1 个答案:

答案 0 :(得分:0)

解决方案:

function deleteAdmin(res, queryParams)
{

  connection.query("DELETE FROM safeplusdb.admin WHERE name=\""+(decodeURIComponent(queryParams.admindeleted))+"\";", function(err, records){
      if(err) throw err;

        connection.query("SELECT * FROM safeplusdb.admin;", function (err, records){
          if(err) throw err;

          adminlist=[];
          for(i=0; i<records.length; i++)
          {
            adminlist[i]=records[i].name;
          }

          res.send({
            state: "OK"
          });
        });   
  });

}

我们的想法是在基础上发出一个SELECT请求,插入DELETE请求,以便立即刷新Web浏览器的所有数据。它有效!