繁体   English   中英

Mongodb mongoose节点js架构关系

[英]Mongodb mongoose node js schema relation

你好,我是 mongodb 和 node js 的新手,我有一个问题

这是我的产品架构

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const categorySchema = require('./category');

const ProductSchema = new Schema({
    country: {
        type: String,
        required: [true, "country can't be null"]
    },
    city: {
        type: String,
        default: ""
    },
    name: {
        type: String,
        required: [true, "name can't be null"]
    },
    measureValue: {
        type: Number,
        default: 0
    },
    minPrice: {
        type:Number,
        required: [true, "minPrice can't be null"],
        min: [1,"minPrice must be at least 1"]
    },
    maxPrice: {
        type:Number,
        required: [true, "maxPrice can't be null"],
        min: [1,"maxPrice must be at least 1"]
    },
    photoUrl: {
        type:String,
        default: ""
    },
    explanation: {
        type: String,
        default: ""
    },
    category: [categorySchema.schema],
    userID: {
        type: String,
        required: [true,"userid cant be null"]
    },
    isActive: {
        type: Boolean,
        default: true
    },
    createdDate: {
        type: Date,
        default: Date.now
    },
    deletedDate: {
        type:Date
    }
})

这是我的类别架构

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const CategorySchema = new Schema({
 name: {
        type: String,
        required: [true, "name can't be null"]
    },
    createdDate: {
        type: Date,
        default: Date.now
    },
    deletedDate: {
        type:Date
    }
})

我需要这样做; 每个产品数据都必须有类别

如果有一天,一个类别的名称发生了变化,那么与该类别相关的每个产品都必须更改

我正在尝试将类别 id 设置为产品架构,当我获取数据时,它必须是每个类别名称为 json 的产品

如果你帮助我,我真的很困惑,我真的很感激

您可以将类别设置为:

category: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'category' //your model name
    }

如果需要多个类别,可以将其包装到一个数组中并命名为类别。

然后,当您获取数据时,您将必须执行new Product().populate('category')来检索类别数据,而不仅仅是返回类别 ObjectId。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM