Mongoose文档创build的最佳实践,其中字段中的项目数量未知

我查了一下左右,写了一些演示代码,写了一些testing来实现学校pipe理系统。

我想从更多用于mongoose的开发者那里了解到的是,如何创build这个模式的最佳实践是,如何从这个文档中添加我想要的地址和联系费用。

我做出了自己的解决scheme,但是我不知道是不是最优雅可行的方法,我想要经验丰富的人的意见。

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

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

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] } 

我的解决scheme是,通过使用HTML,创build一个新的“电子邮件”或“地址”字段作为用户点击在propperbutton请求。 这生成了一个新的input字段,其名称遵循如下模式:email1,email2,email3,email4

所以,当用户发送数据时,如果我们要创build一个新的学生,我会首先创build数据并将数据发送到mongoose。

在更新的情况下,我会得到已经创build的电子邮件,并将其添加到newEmails.concat(old_emails)

devise数据库有很多种情况:1对1,1对多,多对多。
一对一 :你应该把强大的对象放在另一个里面,例如:
一个人只能有一本护照,那么我们应该把护照对象放在这个人物里面。 一对多一对多三例。
一个很less :less于100个对象,那么你应该在一个对象中添加less数列表,例如:一个人可以有多个地址,如上例所示。
一对多 :许多是千位,那么你应该把许多的主键放在一个对象内的列表中。 一个太多了 :那么不要做以前的解决scheme,而是在众多的每个对象中添加一个主元素。
最后, 多对多 :你应该把它们列为双方的名单。
检查下面的参考:
https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1
https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-2
https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-3

莫罗弗,为这部分phone: [String, String] ,你应该使phone: [String]