簡體   English   中英

如何最好地引用 Mongoose 模式屬性中的另一個模式?

[英]How to best reference another schema in a Mongoose schema property?

我正在定義一個 mongoose 用戶模式。
它將包含對地址模式的引用:

const AddressSchema = mongoose.Schema({
  street: String,
  city: String,
  zip: String,
});

const UserSchema = mongoose.Schema({
   ...
});

我從文檔中看到我可以做到這兩點:

const UserSchema = mongoose.Schema({
  name: String,
  address: {
    type: AddressSchema,
  },
  ...
});

或者

const Address = mongoose.model("Address", AddressSchema);

const UserSchema = mongoose.Schema({
  name: String,
  address: {
    {
      type: mongoose.Schema.Types.ObjectId,
      ref: "Address"
    }
  },
  ...
});

我想唯一的區別是,在第一種情況下查詢用戶文檔時,我總是會填充地址,而在第二種情況下,我將不得不populate()它...

我問的只是為了確定這就是區別,如果有更微妙的區別我應該注意......從文檔中我無法分辨......

這實際上取決於您需要的查詢類型。

如果您只需要與外部連接的內部操作,例如應該只向他顯示的用戶的私人帳戶操作 - 子文檔 wat 是更好的方法,因為它不需要填充。

如果您需要一起顯示所有操作的列表,那么遍歷每個用戶以獲取他們的操作會很痛苦,然后將其匯總,然后您將擁有該數組,所以這里更好的方法是SQL 稱為“規范化”,您最終會得到所有用戶的一個集合,因此您可以顯示它,但每個操作都會有一個對用戶的引用,因此您可以按特定用戶進行過濾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM