图像未从节点 js 中的数据库中删除

Image is not deleting from database in node js

我正在研究 node.js 表达框架和猫鼬,我对它完全陌生。 这是我的架构。

const mongoose = require('mongoose');

const ActivitySchema = mongoose.Schema({
    _id: mongoose.Schema.ObjectId,
    Activity:String,
    Photos:[{
        Photo:String,
    }]
});

module.exports =  mongoose.model('Activity', ActivitySchema);

这是我的 code.I 删除成功,但数据未从数据库中删除。

router.delete('/removeactivity/:_id/:_pid', function (req, res) {         
    Activities.findByIdAndUpdate(
        { _id: req.params._id }, 
        { $pull: { Photos: { _id:req.params._pid } } },
        function(err,user) {
            if(err) {
                res.status(500).json(err);
            }
            res.status(200).json(user)
        }
    );        
})

您正在使用 mongoose.Schema.ObjectId,因此您的 _id 字段是 ObjectId。在 delete 逻辑中,您选择了 req.params._id,我猜这是一个字符串而不是 ObjectId,因此它不会起作用。

要从字符串创建 ObjectId,请像这样使用 mongoose.Types.ObjectId

Activities.findByIdAndUpdate(
    { _id: mongoose.Types.ObjectId(req.params._id) },
    ...
)

要获取文档的新版本,应用更新后,将 {new: true} 放入查询中。默认为 false。

Activities.findByIdAndUpdate(
        { _id: req.params._id }, 
        { $pull: { Photos: { _id:req.params._pid } } },
        {new : true},
        function(err,user) {
            if(err) {
                res.status(500).json(err);
            }
            res.status(200).json(user)
        }
    );        
})