mongoose中根據_id刪除數據,_id多出一對引號問題

在自己寫的項目中的代碼如下:

_id在mongodb中的數據類型是object  使用模板展示後,將其轉換爲類型。

 <a href="/article/delete?id={{$value._id}}" class="btn btn-info btn-border btn-round btn-sm mr-2">
 刪除
</a>

根據mongoose中的_id刪除某個文章,如上圖所示。

// 刪除文章
articleSchema.static('deleteById',function(id,callback){
    this.deleteOne({
        _id:id,
        // _id:"5e4d32a116b7423900835e03"
    },function(err){
        callback(err)
    })
})

如上圖所示定義了一個deleteById的靜態方法(deleteOne爲mongoose中提供的方法),當路由爲/article/delete的時候調用這個方法,調用如下圖所示:

// 刪除文章
router.get('/article/delete',function(req, res){
    Article.deleteById(req.query.id,function(err){
        if(err){
            return res.status(500).send('Server error.')
        }else{
            console.log("刪除成功")
            res.redirect("/")
        }
    })
})

當通過點擊<a>鏈接刪除某個文章時,發現刪除不成功。

在調試過程中將上述第二段代碼中的 _id:id中的id改爲一個確定的"5e4d32a116b7423900835e03",發現可以刪除成功。那麼問題顯而易見id不正確。

this.deleteOne({
        _id:id, //這裏並不是"5e4d32a116b7423900835e03",而是' "5e4d32a116b7423900835e03" '
        // _id:"5e4d32a116b7423900835e03"
    },function(err){
        callback(err)
})

將其打印出來發現   

_id:id, //這裏並不是"5e4d32a116b7423900835e03",而是' "5e4d32a116b7423900835e03" '(多了一對引號)。

解決辦法:

改爲: ?id={{$value._id.toString()}}

<a href="/article/delete?id={{$value._id.toString()}}" class="btn btn-info btn-border btn-round btn-sm mr-2">
 刪除
</a>

 

這篇文章可以參考,寫的非常好:

https://www.jianshu.com/p/5cf15aacb3bf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章