I am not familiar with node.js, but for mongodb design, you'll have to choose between "subdocuments" vs "linking documents".
1
You can have a look at how to structure many-to-many relationships in mongoose?.
Idea is to retrieve a complete document where it makes sense. For instance, you might have the following schema.
{ customer : { name: xxx },
appointments: [ {date: xx, type : xxx .., servicerep: xxx}, {date: xx, type : xxx .., servicerep: xxx} ]
}
even though, info may be duplicated, for queries, you only hit one document/subdocument.
4
Even though it might be client side, it does not mean server should not validate. Client could validate as best as it can, but server still ought to verify. Sorry, I don't have anymore to add.