将新对象数组添加到特殊ID,但会创建新行

时间:2019-07-10 15:46:01

标签: javascript arrays node.js mongodb mongoose

我需要将新对象推送到我的产品数组中。我发现,如果数组为空,则findOneAndUpdate()方法首次起作用。当我执行save()方法时,它只创建包含产品的单独行。我已经尽我所能尝试了一切,但没有成功。

我的模式;

const ProdcutSchema = new mongoose.Schema({

    name:{
        type: String,
        required: true
    },

    productDescription:{
        type: String,
        required: true
    },

    pricePerUnit:{
        type: Number,
        required: true
    },

    productAmmount:{
        type:Number,
        required: true
    },

    /*productImagePath:{
        type:String,
        required: true
    }*/

});


const UserSchema = new mongoose.Schema({
    name:{
        type: String,
        required: true
    },

    email:{
        type: String,
        required: true
    },

    password:{
        type: String,
        required: true
    },

    date:{
        type: Date,
        default: Date.now
    },

    products:[ProdcutSchema]
});


const User = mongoose.model('User', UserSchema);

module.exports = User;

猫鼬在POST方法上运行:

const newProduct = new  User({

            email: useremail,

            products:[{
                name :product_name,
                productDescription : product_Description,
                pricePerUnit : price_PerUnit,
                productAmmount : product_Ammount
            }]
        });

        newProduct.save((err)=>{
            if(err) console.log(err);

            res.redirect('/dashboard');
        });

1 个答案:

答案 0 :(得分:0)

就您而言,我认为您应该使用$push运算符。

示例:

await User.findOneAndUpdate(your_condition, {$push: {products: your_new_product}});