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

时间:2018-06-26 11:37:55

标签: node.js mongodb express mongoose pull

我正在研究node.js表达框架和猫鼬,我对此是全新的。     这是我的架构。

<asp:DropDownList ID="DDL" runat="server" CssClass="form-control btn-default" Style="font-size: 1.25vw; font-weight: bolder; font-family: Sakkal Majalla; text-align: center; text-align-last:center; color: #1658a4; height: 2.5vw; width: 18vw" TabIndex="2" AutoPostBack="true">

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

const mongoose = require('mongoose');

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

要获取文档的新版本,请在应用更新后将{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)
        }
    );        
})