node.js - 图像未从 Node js中的数据库中删除

标签 node.js mongodb express mongoose pull

我正在研究 Node.js Express 框架和 mongoose,我对它完全陌生。 这是我的架构。

const mongoose = require('mongoose');

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

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

这是我的代码。我删除成功,但数据未从数据库中删除。

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) },
    ...
)

关于node.js - 图像未从 Node js中的数据库中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041988/

相关文章:

node.js - 主要 Node.js 文件存在哪些命名约定?

node.js - 一种在 Mongoose 中与用户加入帖子的方法

java - 删除mongodb java中的子节点

node.js - mongodb 合并等效(与 Mongoose )

node.js - 如何在express中调试TypeError [ERR_INVALID_ARG_TYPE]?

node.js - 输入验证失败时如何防止 Multer 文件上传

node.js - Facebook OAuth2 不提供用户电子邮件

javascript - 异步系列,如何使用具有特定绑定(bind)变量的函数

node.js - 如何使用点符号查找记录并使用 Mongoose 更新模式中的值

node.js - 如何在 azure 网站上将私有(private) git 存储库作为包加载?