Mongoose,推送一个数组 Model.update 不是函数

Posted

技术标签:

【中文标题】Mongoose,推送一个数组 Model.update 不是函数【英文标题】:Mongoose, push an array Model.update is not a function 【发布时间】:2018-10-11 20:44:33 【问题描述】:

猫鼬类别架构:

    const CategoryAdvertSchema = new mongoose.Schema(
        UniqueHomes: 
            cave:  type: Boolean, default: false ,
            natureLodge:  type: Boolean, default: false ,
            castle:  type: Boolean, default: false ,
            farmStay:  type: Boolean, default: false 
        ,
        PropertyType: 
            apartment:  type: Boolean, default: false ,
            villa:  type: Boolean, default: false ,
            loft:  type: Boolean, default: false ,
            yurt:  type: Boolean, default: false 
        ,
        Others: [CategoryDynamiqueSchema]
    );

我的猫鼬 OthersShema 用于推送数组:

    const CategoryDynamiqueSchema = new mongoose.Schema(
        dayOfCategory:  type: Date, default: Date.now ,
        nameOfCategory:  type: String ,
        typeOfCategory:  type: String 
    );

我的 API:

category.post('/category', jwt.checkUserToken, (req, res) => 
    const dayOfCategory = Date.now();
    const nameOfCategory = req.body.nameOfCategory;
    const typeOfCategory = req.body.typeOfCategory;

    CategoryAdvert.update(
        $push: 
            Others: 
                dayOfCategory: dayOfCategory,
                nameOfCategory: nameOfCategory,
                typeOfCategory: typeOfCategory
            
        
    ,  new: true , (err, category) => 
        if (err) 
            res.json( success: false );
            console.log('err : ', err);
         else 
            console.log("La catégorie '" + nameOfCategory + "' a bien été ajouté");
            res.json( success: true );
        
    );
);

当我尝试推送数组时,出现以下错误:

TypeError: CategoryAdvert.update 不是函数

【问题讨论】:

【参考方案1】:

我做了一些改变,它正在工作

    category.post('/category', jwt.checkUserToken, (req, res) => 
        console.log('req.body => ', req.body);
        const dayOfCategory = Date.now();
        const nameOfCategory = req.body.nameOfCategory;
        const typeOfCategory = req.body.typeOfCategory;

        Advert.update(
            $push: 
                'CategoryAdvert.Others': 
                    dayOfCategory: dayOfCategory,
                    nameOfCategory: nameOfCategory,
                    typeOfCategory: typeOfCategory
                
            
        ,  new: true , (err, category) => 
            if (err) 
                res.json( success: false );
                console.log('err : ', err);
             else 
                console.log("La catégorie '" + nameOfCategory + "' a bien été ajouté");
                res.json( success: true );
            
        );
    );

【讨论】:

以上是关于Mongoose,推送一个数组 Model.update 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 错误 mongoose 不会在数组 $pushAll 中推送对象

如何使用 mongoose 在 MongoDB 数组中推送数据

如何在 Mongoose 中推送数组

返回推送对象的 id nodejs mongoose

使用 Mongoose 返回更新的集合

在 Mongoose 中推送 ObjectId