ฉันกำลังใช้ Mongoose เพื่อออกแบบสคีมา ฉันมีสองคอลเลกชันชื่อ ร้านอาหาร และ ผลิตภัณฑ์ ฉันได้จัดเก็บรายละเอียดร้านอาหารทั้งหมดไว้ใน Restaurant Collection ในคอลเลกชัน ผลิตภัณฑ์ ฉันมีช่องชื่อ รหัสร้านอาหาร ซึ่งแสดงเป็น _id ในคอลเลกชัน ร้านอาหาร และแมปทั้งคู่ คอลเลกชันได้สำเร็จ ตอนนี้ Front-End กำลังใช้ Angular 5 ฉันได้ให้การควบคุมแก่เจ้าของร้านอาหารในการจัดเรียงสินค้าตามความต้องการ เพื่อดำเนินการนี้ ฉันได้สร้างฟิลด์ใหม่ในคอลเลกชัน ผลิตภัณฑ์ ชื่อ sortIndex และกำหนดค่าตั้งแต่ 0 ไปจนถึงจำนวนผลิตภัณฑ์ที่มีจำหน่ายต่อร้านอาหาร โพสต์ข้อมูลจำลองของฉันด้านล่าง
รายละเอียดร้านอาหาร
1)
_id : "ABC",
"Name" : "Eat Well Restaurant",
2)
_id : "DEF",
"Name" : "Eat ALL Restaurant",
รายละเอียดสินค้า
1)
"name": "Pizza",
"Price": 20,
"restaurantCode" : "ABC",
"sortIndex": 0
2)
"name": "Juice",
"Price": 30,
"restaurantCode" : "ABC",
"sortIndex": 1
3)
"name": "Fruit",
"Price": 20,
"restaurantCode" : "ABC",
"sortIndex": 2
4)
"name": "Chicken Rice",
"Price": 20,
"restaurantCode" : "DEF",
"sortIndex": 0
5)
"name": "Chicken Fry",
"Price": 20,
"restaurantCode" : "DEF",
"sortIndex": 1
6)
"name": "Chicken Briyani",
"Price": 20,
"restaurantCode" : "DEF",
"sortIndex": 2
กำลังแสดงผลิตภัณฑ์ตามค่า sortIndex ตอนนี้เมื่อใดก็ตามที่ผู้ใช้ดำเนินการเรียงลำดับที่ส่วนหน้า (เชิงมุม) ฉันจะกำหนดค่า sortIndex อีกครั้ง ปัญหาคือเมื่อใดก็ตามที่เจ้าของร้านอาหารลบผลิตภัณฑ์ ฉันจะต้องกำหนดค่า sortIndex ใหม่สำหรับผลิตภัณฑ์ทั้งหมดที่เกี่ยวข้องกับร้านอาหารนั้น ๆ ฉันรู้สึกว่ามันเป็นการผ่าตัดที่มีค่าใช้จ่ายสูง นี่เป็นแนวทางที่ฉันใช้มาจนถึงตอนนี้และใช้งานได้ดี ฉันอยากรู้ว่ามีวิธีใดที่ดีกว่าในการแก้ไขปัญหานี้หรือไม่ และแน่นอนว่าจะมีวิธีใดวิธีหนึ่ง สแต็กของฉันคือ NodeJS, Mongoose, MongoDB, Angular (Front-End) ฝากความคิด/ความคิดของคุณไว้ ขอบคุณ