【问题标题】:how to send ObjectID with ajax to backend (Node.JS) [closed]如何使用ajax将ObjectID发送到后端(Node.JS)[关闭]
【发布时间】:2018-01-20 14:43:36
【问题描述】:

字体结束代码(HTML,Javascript)我想制作删除按钮,但我无法使用 ajax 发送 ObjectID

var retName = $(this).data("row-id");
    $.ajax({
          type: "POST",
          url: "/delete",
          data: 
            {'id' : ObjectId(retName)}
          ,
          success: function() {

          },
          error: function(textstatus, errorThrown) {
            alert('text status' + textstatus + ', err ' + errorThrown);
          }
        });

后端代码(Node.js)

app.post('/delete', function(require, response) {
  db.open(function(error, db) {
  db.collection('infodb', function(error, collection) {
  var doc = require.body;
  console.log(ObjectId(doc))
  collection.remove(doc, function() {
    db.close();
  });
});
  });
});

非常感谢

【问题讨论】:

    标签: javascript jquery node.js ajax mongodb


    【解决方案1】:

    我不知道你为什么要使用“POST”方法来删除数据。为什么你不能只定义删除方法并给 api 一个正确的名称。因为 API 名称不能是动词,这里 delete 是动词。你可以像这样定义你的代码,我将把这个 api 名称命名为“用户”。你可以改变它

    var retName = $(this).data("row-id");
        $.ajax({
              type: "DELETE",  //Delete method here 
              url: '/user/'+retName ,
              success: function(data) {
    console.log(data);
              },
              error: function(textstatus, errorThrown) {
                alert('text status' + textstatus + ', err ' + errorThrown);
              }
            });
    

    在节点js中

    app.delete('/user/{id}', function(req, response) {
     console.log(req.params.id); //this will give you id
      db.open(function(error, db) {
      db.collection('infodb', function(error, collection) {
      //var doc = require.body;
      console.log(ObjectId(doc))
      collection.remove(doc, function() {
        db.close();
      });
    });
      });
    });
    

    【讨论】:

      【解决方案2】:

      我认为在你的 NodeJS 中,应该是

      app.post('/delete', function(require, response) {
        db.open(function(error, db) {
        db.collection('infodb', function(error, collection) {
        var doc = require.body.id;
        console.log(doc)
        collection.remove(doc, function() {
           db.close();
        });
      });
        });
      });
      

      因为你想要参数id

      而且因为它已经是对象ObjectId 我不明白为什么你会得到那个对象的ID。

      如果这不起作用,您是否尝试传递另一个变量而不是您的 ObjectId?

      【讨论】:

      • 谢谢你的回答,但我已经解决了这个问题。
      • 顺便说一句。我很确定是function(request, response) {} 而不是function(require, response) {}
      猜你喜欢
      • 2017-12-19
      • 2021-02-22
      • 2023-03-21
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多