我的文档没有在nodejs中的mongodb中被删除

时间:2016-08-23 13:39:13

标签: node.js mongodb mongoose

我的文档未从集合中删除。我也没有收到任何错误。 http交易完全没问题。

// Node Module dependencies
var express = require('express');
var router = express.Router();

// Local Module dependencies
var common = require('./common.js');
//var request = require('request');


var db =common.conn;
var Question = require('../model/questions');


router.route('/postquestion')
    .post(function (req, res) {

        var item = new Question(req.body);
        //console.log(item);

        //=======calling postdata method=====//
        postQuestion(item, function (result) {

            res.json(result);
        });

    });

router.route('/deletequestion')
    .delete(function (req, res) {
    console.log(req.body._id);

    Question.collection.deleteOne({_id:req.body._id},function(err,question){
        if(err) throw err;
        console.log('the document is deleted')
        res.send(question);

    });

})
function postQuestion(item, fn) {
    item.save(function (err) {
        if (err) console.log(err);
        fn(item);
    });
}
module.exports = router;

postquestion函数工作正常,数据库正在更新。当我使用邮递员提出删除请求并发送以下json。

{
    "_id": "57bc442c4925180b067f075b"
}
我得到了如下的答复。

   {
   "ok": 1,
   "n": 0
   }

当我在robomongo中检查数据库时,我看到文档未被删除。我错过了要做的事情。还有别的事情要做.....!

3 个答案:

答案 0 :(得分:2)

MongoDB使用ObjectID索引文档。

如果要使用Mongo ID删除对象,则必须实例化ObjectID。

https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/

:set nopaste

答案 1 :(得分:1)

如果没有任何效果,请尝试以下操作...

   app.delete("/api/posts/:id",(req,res,next)=> 
{  
   Post.deleteOne({_id: req.param.id})
   .then(result=>{
     console.log(result);
   });
   //console.log('Post Deleted on node JS');
   res.status(200).json({message: 'Delete'}); 

});

答案 2 :(得分:0)

如果你使用的是MongooseJS,你只需要做com.android.support:support-fragment:24.2.0 Question.collection ...`的事情。除非你的模型中有不同的连接方式