mongoose findByIdAndRemove()奇怪的行为

e4eetjau  于 2023-05-13  发布在  Go
关注(0)|答案(2)|浏览(141)

我正在使用mongoose,当我尝试使用像.findByIdAndRemove()这样的查询时,它删除了内容,但没有从数据库中删除产品,只是将其转换为Null
喜欢

{"_id":"5d67502aaffb3729a0e24904","name":null,"image":null,"price":null,"desc":null,"__v":0}

表单

<form action='/product/<%=product._id%>' method="POST">
    <button type="submit" class="btn btn-danger">Delete</button>
</form>

//Route
router.post('/product/:productId',productController.deleteProduct)

//controller
//delete product
exports.deleteProduct = (req, res, next)=>{
    const prodId = req.params.productId
    Product.findByIdAndRemove(prodId)
    .then(() =>{
        console.log('has been deleted')
        res.redirect('/product')
    })
    .catch(err=>{console.log(err)})
}
nmpmafwu

nmpmafwu1#

请尝试以下删除脚本。
它是用id删除一个文档

Product.remove({_id : new mongoose.Types.ObjectId(prodId)}, (err, result) => { 
 if(err) console.log(err); 
 else console.log(result) 
})

正在删除文档by _id

Product.findByIdAndRemove(prodId, (err, result) => { 
     if(err) console.log(err); 
     else console.log(result) 
    })

它正在删除一个文件

Product.remove({name: 'yourName'}, (err, result) => { 
 if(err) console.log(err); 
 else console.log(result) 
})

或者其他选择

Product.deleteOne({ name: 'Eddard Stark' }, callback);

路由器内

router.delete('/product/:productId',productController.deleteProduct)

在前端,您调用delete API。如果有兴趣可以学习MEARN Stack中的CRUD操作GitHub link

htzpubme

htzpubme2#

使用这个:

Product.findByIdAndRemove(prodId)
.then(function () {
    console.log("Successfully removed");
})
.catch(function (err) {
    console.log(err);
});
res.redirect("/");

相关问题