Estoy definiendo un esquema de usuario mangosta.
Contendrá una referencia a un esquema de dirección:
const AddressSchema = mongoose.Schema({ street: String, city: String, zip: String, }); const UserSchema = mongoose.Schema({ ... });Veo en los documentos que puedo hacer ambas cosas:
const UserSchema = mongoose.Schema({ name: String, address: { type: AddressSchema, }, ... });o
const Address = mongoose.model("Address", AddressSchema); const UserSchema = mongoose.Schema({ name: String, address: { { type: mongoose.Schema.Types.ObjectId, ref: "Address" } }, ... }); Supongo que la única diferencia es que cuando consulto un documento de usuario en el primer caso, siempre obtengo la dirección completa, mientras que en el segundo tendré que populate() ...
Solo pregunto para estar seguro de que esta es la diferencia, y si hay otras más sutiles de las que debería encargarme... De los documentos que no podría decir...
Realmente depende del tipo de consultas que necesite.
Si solo necesita los internos en conexión con los externos, como las acciones de la cuenta privada del usuario que se supone que solo se le muestran a él, el subdocumento wat es una mejor manera, ya que no necesita completarse.
Si necesita mostrar una lista de todas las acciones juntas, será una molestia recorrer cada usuario para obtener sus acciones, luego resúmalas y luego tendrás esa matriz, por lo que la mejor manera aquí es lo que en SQL llamado "normalización", terminará con una colección de todos los usuarios para que pueda mostrarla, pero cada acción tendrá una referencia al usuario para que pueda filtrarla por el usuario específico