Node.js Mongoose创建字段中项数未知的文档的最佳实践

Node.js Mongoose创建字段中项数未知的文档的最佳实践,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我左右环顾了一下,写了一些演示代码,写了一些测试来实现一个学校管理系统 我想从那些更习惯mongoose开发的人那里了解的是,如何以一种方式创建这个模式,从而能够从这个文档中添加我想要的尽可能多的地址和联系费,这将是最佳实践 我提出了自己的解决方案,但我不知道这是否是最优雅、最可行的方法,我想征求经验丰富的人的意见 我应该为地址、电子邮件和电话号码创建单独的模型吗 我创建了这个模式。它仍然有一些伪代码,但是给出一般的想法是可以的 var student = { name: String,

我左右环顾了一下,写了一些演示代码,写了一些测试来实现一个学校管理系统

我想从那些更习惯mongoose开发的人那里了解的是,如何以一种方式创建这个模式,从而能够从这个文档中添加我想要的尽可能多的地址和联系费,这将是最佳实践

我提出了自己的解决方案,但我不知道这是否是最优雅、最可行的方法,我想征求经验丰富的人的意见

我应该为地址、电子邮件和电话号码创建单独的模型吗

我创建了这个模式。它仍然有一些伪代码,但是给出一般的想法是可以的

var student = {
    name: String, 
    surname: String, 
    currentClass: {
        type: mongoose.Schema.Types.ObjectId, 
        ref: "Classes"
    }, 
    birthday: {
        year: Number,
        month: Number,
        day: Number
    },
    address: [{
        name: String, 
        zip: Number,
        address: String, 
        city: String, 
        state: String, 
        complement: String
    }]
    accountable: {
        name: String, 
        surname: String, 
        email: [{
            type: String, 
            required: true, 
            lowercase: true
        }], 
    phone: [String, String]
}
我的解决方案是,通过使用html,根据用户的请求,通过单击propper按钮中的墨迹,创建一个新的“电子邮件”或“地址”字段。这将生成一个新的输入字段,其名称遵循如下模式: email1、email2、email3、email4

因此,当用户发送数据时,如果我们正在创建一个新的学生,我会首先用数据创建数组并将其发送给mongoose


在更新的情况下,我会获取已经创建的电子邮件,并使用
newEmails.concat(old_emails)

将其添加到新数组中。要设计数据库,有许多情况: 1对1,1对多,多对多。
一对一:您应该将强对象放在另一个对象中,例如:
一个人只能有一个passport,那么我们应该将passport对象放在person对象中。 一对多,一对多3箱。
一对少数:少数小于100个对象,则应将少数作为列表添加到一个对象中,例如: 一个人可以有多个地址,如上面的示例所示。
一对多:多就是千,那么你应该把多的主键放在一个对象内的列表中。 一对多:然后不要执行上一个解决方案,而是在多个对象的每个对象中添加一的主解决方案。
最后,多对多:您应该将它们作为列表放在两侧。
检查以下参考资料:




另外,对于这部分
phone:[String,String]
,您应该将其制作成
phone:[String]

非常感谢。。。当时我对猫鼬和数据建模还相当陌生。我用一对几表示地址和电话号码,。。。我还更改了前端,将express模板引擎替换为angular。。。现在,再次修改事物的角度方面,更新为角度2/4。