具有不同模板

时间:2017-06-01 12:06:57

标签: node.js mongodb mongoose

我只想得到你们的意见,因为我很难想到这种架构设计是否合适。所以在我问之前,这是我建立的网站的功能之一:

  1. 用户可以发布他们正在销售的内容
  2. 用户可以搜索帖子
  3. 用户查看帖子及其具体详情
  4. 这是我的POST架构

    var PostSchema = new mongoose.Schema({
        maincategory: String,
        subcategory: String,
        quantity: String,
        name: String,
        description: String,
        plusdetails: {}
    }, {strict: false});
    

    在网站上,当您发布内容时,您将选择主要类别及其子类别,例如我销售计算机,在我的PostSchema上,它接受像maincategory这样的字段,子类别,数量,名称和描述。然后,由于您为计算机选择了一个子类别,我有一个特定的模板来为计算机提供特定的详细信息(如GPU,CPU,多少核心,多少内存等等)。这就是为什么我有这个名为plusdetails在我的PostSchema上,它接受无模式设计。

    例如,如果我想卖手机,那么在我的plusdetails上,它将包含(如操作系统,多少内存,其CPU,相机像素等...) 这是预览它的样子(对不起,这不是关于手机或电脑,但你会得到这个想法)

    enter image description here enter image description here

    总而言之,每个不同的类别,当你发布时,他们都使用一个PostSchema模型,即使它们包含不同的值(在plusdetails上)。因此,当我搜索帖子时,我只会使用

    Post.find({query: data})
    

    因为他们都住在一个模特身上。

    现在我的问题是,这是正确的方法吗?

    因为首先,我想要做的是在每个类别中等同于一个模型,例如,

    • PostCarSchema
    • PostComputerSchema
    • PostHouseSchema

    依此类推,需要数百种型号。有了这个,我可以正确地定义他们的模式,我可以完全控制它应该在那里。但问题是,当用户搜索的东西。我会用什么型号?

    因为它只是一个搜索栏,所以我会搜索"联想",

    enter image description here

    在这种方法(一个类别=一个模型)上,如果我有多个模型,我将如何搜索lenovo。因为联想可以是电脑或手机。由于这个问题,我没有采用这种方法。在我可以使用Post.find({query: data})之前,我不能这样做,因为有数百种型号。

    那么如何设计我的mongodb架构,可以为每个自己拥有特定模板的POST项目提供服务?我做的那个好吗?还是有更好的方法?

0 个答案:

没有答案