您好,我是 nodejs 和 mongodb 的新手。
我有 3 個模型:
- “用戶”與欄位“姓名電話”
- 帶有“姓名、地址”欄位的“商店”
- 帶有“商店用戶狀態”欄位的“會員”。(商店和用戶持有各自收藏的“id”)。
現在,當我創建“shops”api 來獲取所有商店時,我需要添加額外的欄位“isShopJoined”,它不是模型的一部分。如果看到該商店的用戶加入該商店,則此額外欄位將為真,否則為假。
當我與 Android/iOS 等前端開發人員共享我的模型時會出現問題,他們在看到 API 回應之前不會意識到該額外欄位。
那么,如果我在不屬于模型的商店串列中添加額外的欄位可以嗎?或者我需要在模型中添加那個額外的欄位嗎?
uj5u.com熱心網友回復:
如果我理解正確,您無需執行任何操作,因為資訊存盤在Member集合中。但是它會強制前端做一個額外的請求(或許多額外的請求)來擁有串列Shops并檢查(一個一個)當前登錄的用戶是否是Member商店的一個。
請記住,前端通常由資料(以及 API/后端)驅動,而不是相反。前端將不得不適應你給它的東西。
如果你對你擁有的感到滿意,你可以保持這種方式,它會起作用,但這可能不是很有效。
您可以通過兩種方式解決這個問題:
MongoDB 聚合
當檢索(后端側)的店鋪串列,如果你知道提出的要求,而不是簡單地回傳串列中的用戶Shops,你可以回傳的聚集Shops和Members產生含兩種方式的混合檔案中Shops和Models。這樣,前端就可以通過一個后端請求獲得所需的所有資訊。
洗掉Members集合并將資訊存盤在其他地方
本能地,我會走這條路。我們的想法是一個陣列欄位或者存盤shopsJoined在User模型中,或membersJoined在陣列場Shops模型。這樣,無論如何都會檢索資訊,因為您仍然需要檢索Shops并且您已經擁有了User.
uj5u.com熱心網友回復:
是的,您必須將該欄位添加到模型中,因為將其添加到回應中只會是鍵的臨時顯示,但是如果您將來或在某些串列過濾器中需要該欄位,那么將其添加到模型中會很好.
如果您認為必須通知前端,那么就去吧,并且您還可以為“isShopJoined”鍵設定一些默認值,讓它暫時關閉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/402940.html
標籤:
