Запрос на удаление в mongodb не работает, я использую сервер expressjs и nodejs - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь отправить запрос на удаление, чтобы удалить элемент с идентификатором в mongodb, но он не работает. Я искал и пробовал несколько решений stackoverflow безуспешно.

Я пытался:

app.delete('/delete', (req,res) => {
    var id = req.params._id;
    var objectId = require("mongodb").ObjectId
    MongoClient.connect(url, {useNewUrlParser: true}, (err, db) => { 
        if(err) throw err;
        var dbo = db.db("MusicPlayer");
        dbo.collection("Musician").deleteOne({"_id": new mongodb.objectId(id)}, (err, result) => {
            if(err) throw err;
            db.close();
            res.redirect('/')
        });
    });
})

And :
app.delete('/delete', (req,res) => {
    var id = req.params._id;
    var objectId = require("mongodb").ObjectId
    MongoClient.connect(url, {useNewUrlParser: true}, (err, db) => { 
        if(err) throw err;
        var dbo = db.db("MusicPlayer");
        dbo.collection("Musician").deleteOne({"_id": mongo.objectId(id)}, (err, result) => {
            if(err) throw err;
            db.close();
            res.redirect('/')
        });
    });
})

app.delete('/delete', (req,res) => {
    var id = req.params._id;
    var objectId = require("mongodb").ObjectId
    MongoClient.connect(url, {useNewUrlParser: true}, (err, db) => { 
        if(err) throw err;
        var dbo = db.db("MusicPlayer");
        dbo.collection("Musician").deleteOne({"_id": objectId(id)}, (err, result) => {
            if(err) throw err;
            db.close();
            res.redirect('/')
        });
    });``
})

Я не получаю ошибок в консоли, и консоль фактически ничего не записывает, даже простуюстроки.

1 Ответ

0 голосов
/ 11 октября 2019

Можете ли вы попробовать это после того, как убедитесь, что запрос попадает в маршрутизатор? Вы читаете id из req.params, поэтому вы должны включить: _id в URL-адрес маршрута.

Также я думаю, что ObjectId должен быть ObjectID. И вы должны использовать {"_id": new objectId (id)} в deleteOne.

app.delete('/delete/:_id', (req,res) => {
  console.log(req.params);
  var id = req.params._id;
  var objectId = require("mongodb").ObjectID;
  MongoClient.connect(url, {useNewUrlParser: true}, (err, db) => { 
      if(err) throw err;
      var dbo = db.db("MusicPlayer");
      dbo.collection("Musician").deleteOne({"_id": new objectId(id)}, (err, result) => {
          if(err) {
            console.log(err);
            throw err;
          }
          console.log(result);
          db.close();
          res.redirect('/')
      });
  });
})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...