nodejs MongoDB не deleteing на основе идентификатора

голоса
1

Можете ли вы помочь мне с этим кодом. Этот код не удалить значение из MongoDB, в то время как я бегу этот URL: HTTP: // локальный: 3000 / удалить / 57c6713455a6b92e105c5250 .

Я получаю такой ответ: {lastErrorObject:{n:0},value:null,ok:1}, но не удалять.

app.get('/delete/:id', (req, res) => {
   var uid = req.params.id;
   db.collection('quotes').findOneAndDelete({'_id': uid}, (err, result) => {
      if (err) return res.send(500, err);
      res.send(result);
   }); 
});
Задан 31/08/2016 в 09:16
источник пользователем
На других языках...                            


3 ответов

голоса
0

Этот ответ означает, что ваш запрос выполняется правильно «OK»: 1, но запрос находки не может найти любой документ для его удаления.

Поэтому перед использованием « findOneAndDelete» использовать только « findOne» и войти в ответ , чтобы проверить погоду , что документ или нет.

Ответил 31/08/2016 в 09:42
источник пользователем

голоса
3

В MongoDB запрос документа (идентификатор _id), используя ObjectIdконструктор и не струну ObjectId в. Таким образом, запрос должен быть: { '_id': ObjectId(uid) }.

пример

var mongoClient = require('mongodb').MongoClient;    

//Include ObjectId
var ObjectId = require('mongodb').ObjectID;

mongoClient.connect("Your connection string", function(err, db) {
   var query = {
      _id: ObjectId("id_string") // Important to notice
   };
   var collection = db.collection('your collection');

   collection.find(query, function(err, docs) {
       console.log(err, docs);
   });
});

Предложение

//Include ObjectId
var ObjectId = require('mongodb').ObjectID;

app.get('/delete/:id', (req, res) => {
   var uid = req.params.id;

   //Add object id to query object
   db.collection('quotes').findOneAndDelete({'_id': ObjectId(uid)}, (err, result) => {
      if (err) return res.send(500, err);
      res.send(result);
   }); 
});
Ответил 31/08/2016 в 13:42
источник пользователем

голоса
0

Да. спасибо я понял, где я сделал неправильно. смотри ниже правильный ответ.

var ObjectId = require('mongodb').ObjectID;
app.get('/delete/:id', (req, res) => {
var uid = req.params.id;
db.collection('quotes').findOneAndDelete({'_id': ObjectId(uid) }, (err, result) => {
if (err) return res.send(500, err);
res.send(result);
}); 
});
Ответил 01/09/2016 в 10:10
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more