【问题标题】:How can you define the object in an array of items for mongoose schema如何在 mongoose 模式的项目数组中定义对象
【发布时间】:2020-06-24 01:45:54
【问题描述】:

在数组内创建对象以简单地定义数组内的对象时的最佳做法是什么? mongodb 怎么知道期望一个数组,并且对这个数组的查询会有效吗?

例如在这个架构中

const vancouverSchema = new mongoose.Schema(
    {
        jobs: {
            retail: {
                type:Array
            },
            general_labour: {
                type:Array
            },
            sales: {
                type:Array
            },
            government: {

            }

         },
    }
)

最好的做法是简单地做

retail: [{
    title: {
        type: String
    },
    description: {
        type:String
    },
    pay: {
        type:Number
    }
}]

VS

retail: {
    type:Array
},

尝试为城市及其各种类别创建一个简单的模式,而这部分设计没有太多的认知开销。

这是温哥华模式的一个例子,但我将有 15-20++ 城市模式,只需复制和粘贴即可动态创建集合,并且由于要跟踪的内容太多,这似乎是最简单的方法做。我知道,复制粘贴不好,但是..高级设计不允许吗?而不是通过尝试一些聪明的方式引入错误,谢谢大家。

const vancouverSchema = new mongoose.Schema(
    {
        jobs: {
            retail: [
            {
                title: {
                    type: String
                },
                description: {
                    type: String
                },
                pay: {
                    type: Number
                },
                contact_email: {
                    type: String
                }
            },
                {
        timestamps: true
                }

            ],
            general_labour: {
                type:Array
            },
            sales: {
                type:Array
            },
            government: {

            }

         },
        for_sale: {
            free: {
                type:Array
            },
            antiques: {
                type:Array

            },
            appliances: {
                type:Array

            }
        },
        housing:{
        apt: {
                type:Array
        },
        office_commerical:{
                type:Array
        }
        }
    }
)

【问题讨论】:

  • 你能给我们举一个vancouverSchema对象的例子吗?
  • 我想我给了你所要求的,不确定。
  • 对不起,我应该更清楚。你能告诉我们你将输入vancouverSchema的对象/JSON吗?
  • 基本上这个想法是 vancouverSchema 将是一个集合,然后我会为工作提供一些东西,例如,带有标题等。这个想法是创建单独的城市,然后将帖子推送到那个城市,分开通过将帖子保存在数组中来确定帖子的类别。
  • 所以请向我们展示集合中的文档是什么样的。如果您不告诉我们成分,我们将无法为您提供食谱。

标签: node.js reactjs mongodb express mongoose


【解决方案1】:

你可以这样做:

const vancouverSchema = new mongoose.Schema({
    jobs: {
        retail: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'newSchemaCreated'
            }
        ],
        general_labour: {
            type: [Number]
        },
        sales: {
            type: [Boolean]
        },
        government: {}
    }
})

如果您创建另一个架构,零售会更好。如果你有其他类似零售物业的东西,你也应该这样做。因为把东西嵌套太多是不好的。

【讨论】:

  • 但是为什么要创建另一个模式呢?如果我需要获取零售中的所有商品,这不会比简单地查询工作然后获取或编辑零售中的某些内容更有效,问题是,我正在创建许多城市,这是 15-20 个城市之一,所以如果您有更好的计划/文档或阅读材料,那么跟踪正在发生的事情将是一个问题,这就是为什么我试图将其包含在内。让我知道!
  • 我在猫鼬方面不是很好,我不想花 3 个月的时间在教程上,没有人来帮助我,所以我尽量保持简单,因为当我得到卡住了,这将是一个难题,我将不得不重新启动项目..这是我的担心
  • 有什么方法可以让我像不和谐一样和你说话吗?
  • 不幸的是,我需要更多的 10 点声望才能进入聊天,所以如果有人投票赞成这个答案,我就可以加入
猜你喜欢
  • 2017-02-10
  • 2020-12-04
  • 1970-01-01
  • 2017-09-30
  • 2011-12-06
  • 2020-07-25
  • 2013-11-10
  • 2013-03-15
相关资源
最近更新 更多