[英]Trying to delete a object reference in MongoDB with mongoose on NodeJS
[英]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.