簡體   English   中英

nodeJS + MongoDB + Mongoose-無法刪除1個條目

[英]nodeJS + MongoDB + Mongoose - Unable To Delete 1 Entry

我正在使用nodeJS MongoDB / Mongoose使用Postman post / delete方法創建/更新/刪除數據庫中的電影。 創建功能運行良好,甚至刪除功能也運行正常,因此當我使用郵遞員時,我得到的回報是:“電影已刪除!” 喜歡它應該。

唯一的問題是我的函數正在清空整個電影數據庫,而不是僅清空那部電影,這是刪除函數:

 function destroy(req, res, next){
    var movieID = req.body
            Movie.remove(movieID, function(err,movie){
                    if(err){
                        res.status(400).send(err)
                    } else {
                        res.send("Movie has been deleted!")
                        db.close()
                    }
            })

電影對象:

var movieSchema = new mongoose.Schema({
    name: String,
    yay: Number,
    nay: Number,
    release_date: Date,
    in_theaters: Boolean,
    released: Boolean,
    buy_link: String,
    imdb_link: String,
    image_url: String,
    description: String,
    trailer_link: String
})

我想基於它的“名稱”刪除電影,所以我只需要輸入名稱,它將刪除整個電影。

您是否嘗試過findOneAndRemove查詢?

與查找模型並將其從回調中刪除相比,此查詢要干凈得多。 除此之外,我認為它的速度更快,因為您基本上每次查詢1次,而不是每次查詢2次。

你可以試試這個嗎?

    var movieName = req.body.name;
    Movie.find('name': movieName, function(err, movie) {
        if (err) res.send({error: err});


        Movie.remove(function(err, movie){
            if (err) res.send({error: err});
            res.json({message: "Movie is removed", movie: movie});
        });

    });

如果您將直接值傳遞給Remove方法,它將嘗試與_id字段匹配。

根據您的模型,_id是ObjectId字段,該字段由mongodb自動管理。 如果您這樣輸入。 .remove("movie", callback) ,它不是有效的ObjectId。

貓鼬正在放棄此無效條件並執行Movie.remove({});。 這將刪除您的所有記錄。

因此,最好在直接傳遞給Movie.remove();之前驗證輸入是否為有效的ObjectId。

我也建議像這樣使用: Movie.remove({_id: movieId}, callback) 電影名稱:

Movie.remove({name: movieName}, callback);

更新:您可以從郵遞員那里獲取

var movieName = req.body.movieName;

Movie.remove({name: movieName}, function(err, updateObj){
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM