首页 > 解决方案 > 关系猫鼬

问题描述

我有两个模式,其中一个依赖于另一个来保存。

const OrderSchema = new moongose.Schema({
    product: {
        type: moongose.Schema.Types.ObjectId,
        ref: 'Product',
        required: true
    },
    quantity: {
        type: Number,
        required: true,
        default: 1,
    },
    total_price: {
        type: Number,
    }
})

OrderSchema.pre('save', async function(next) {
    this.total_price = product.price * quantity

    next()
})

const Order = moongose.model('Order', OrderSchema)

和另一个:

const ProductSchema = new moongose.Schema({
    name: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        required: true
    },
    description: {
        type: String
    },
    photo: {
        data: Buffer,
        contentType: String
    }
})

const Product = moongose.model('Product', ProductSchema)

但是,当我尝试保存一个订单,其中一个产品在数据库中退出时:

{
    "product":"5cae6ff5d478882ed8725911",
    "quantity":3
}

显示错误:错误:ReferenceError:产品未定义

这是我保存新订单的控制器:

router.post('/register', async (req, res) => {
    try {
        const order = await Order.create(req.body)

        return res.send({ order })
    }
    catch (error) {
        console.error('Error:', error)
    }
})

标签: javascriptnode.jsmongodbmongoose

解决方案


我通常使用

    idproduct: {
         type: moongose.Schema.ObjectId,
         required: true
     },

这样帖子可以正常工作


推荐阅读