ฉันจะทราบได้อย่างไรว่าเหตุใดเอกสาร MongoDB จึงไม่ผ่านการตรวจสอบ


13

ฉันจะตรวจสอบได้อย่างไรว่าเหตุใดการแทรกเอกสาร MongoDB จึงล้มเหลวในการตรวจสอบ สิ่งที่ฉันได้รับกลับมาคือ writeError ที่ระบุว่า "การตรวจสอบเอกสารล้มเหลว" ซึ่งไม่ได้มีประโยชน์มาก

(สิ่งนี้เกิดขึ้นบ่อยและฉันต้องการที่จะเข้าใจวิธีการแก้ไขข้อบกพร่องเหล่านี้อย่างถูกต้องแทนที่จะขอความช่วยเหลือจากตัวอย่างที่เฉพาะเจาะจง)

คำตอบ:


10

ณ MongoDB 3.2 ไม่มีข้อเสนอแนะเกี่ยวกับเหตุผลในการตรวจสอบความถูกต้องของเอกสารล้มเหลว: ขณะนี้นิพจน์การตรวจสอบความถูกต้องโดยรวมประเมินว่าเป็น True ("OK") หรือ False ("การตรวจสอบเอกสารล้มเหลว") พฤติกรรมการตรวจสอบสามารถปรับได้ด้วยvalidationAction(ข้อผิดพลาด / เตือน) และvalidationLevel(เข้มงวด / ปานกลาง / ปิด) ตัวเลือกการกำหนดค่า แต่สิ่งนี้ไม่ได้ให้บริบทเพิ่มเติมใด ๆ สำหรับการตรวจสอบความล้มเหลว

หากคุณต้องการคำติชมโดยละเอียดเพิ่มเติมวิธีที่แนะนำคือการเพิ่มตรรกะการตรวจสอบลงในแอปพลิเคชันของคุณแทนที่จะใช้การตรวจสอบฝั่งเซิร์ฟเวอร์เพียงอย่างเดียว แม้ว่าจะมีการตรวจสอบความถูกต้องของฝั่งเซิร์ฟเวอร์การตรวจสอบจำนวนมากก็ทำได้ดีที่สุดในตรรกะทางธุรกิจของแอปพลิเคชันเพื่อลดการเดินทางไปยังเซิร์ฟเวอร์ฐานข้อมูลให้น้อยที่สุดและให้ข้อเสนอแนะที่ตอบสนองต่อผู้ใช้

ตัวอย่างเช่นการป้อนข้อมูลผู้ใช้สำหรับเว็บแอป (ฟิลด์ที่จำเป็น, รูปแบบฟิลด์, ... ) ควรได้รับการตรวจสอบความถูกต้องในเบราว์เซอร์ก่อนที่จะส่งไปยังแอปพลิเคชันของคุณหรือพยายามแทรก / อัปเดตในฐานข้อมูล

อย่างไรก็ตามมันสมเหตุสมผลที่จะตรวจสอบหลายระดับเพื่อให้แน่ใจว่าคุณภาพของข้อมูลและบริบทบางอย่างในการวินิจฉัยความล้มเหลวในการตรวจสอบจะมีประโยชน์มาก มีคำขอคุณลักษณะที่เกี่ยวข้องที่เปิดให้คุณสามารถดู / ขึ้นลงคะแนนเสียงในการติดตามปัญหา MongoDB คือSERVER-20547: เปิดเผยเหตุผลที่การดำเนินการล้มเหลวในการตรวจสอบเอกสาร

สำหรับข้อมูลเพิ่มเติมคุณอาจจะสนใจในเอกสารการตรวจสอบ - ส่วนที่ 1: การเพิ่มเพียงขวาจำนวนเงินของการควบคุมเอกสารของคุณ นี่เป็นการเน้นถึงข้อดีข้อเสียทั่วไปของการตรวจสอบเอกสารที่ MongoDB 3.2 และมีตารางอ้างอิงสำหรับผลลัพธ์ตามตัวเลือกvalidationActionและvalidationLevelการกำหนดค่า


2
ขอบคุณ! เดาฉันไม่ได้หายไปที่นี่ เราทำการตรวจสอบความถูกต้องส่วนใหญ่ของเราในแอปพลิเคชันของเรา แต่เราปล่อยให้การตรวจสอบระดับต่ำเป็นเครื่องมือตรวจสอบ MongoDB ส่วนใหญ่เพื่อให้แน่ใจว่าวิศวกรซอฟต์แวร์ของเรา (และตัวฉันเอง) ไม่ได้สร้างข้อบกพร่องในระหว่างการพัฒนา ฉันได้รับการโหวต JIRA แล้ว ไชโย!
Jonathan Wheeler

ปัญหาคือรูปแบบสคีมาคือ "กึ่งมาตรฐาน" เช่นกับส่วนขยาย MongoDB ดังนั้นจึงยังคงยากที่จะค้นหาสาเหตุที่ใช้ตัวตรวจสอบความถูกต้อง JSON Schema มาตรฐาน
Hendy Irawan

1
@HendyIrawan ใช่มีส่วนขยายบางส่วนสำหรับ JSON Schemaสำหรับประเภทข้อมูล MongoDB ดังนั้นการตรวจสอบลูกค้าเพิ่มเติมหรือการแปลงจะต้องมีการตรวจสอบอย่างเข้มงวด ผมเคยเห็นตัวอย่างเช่นmongo-schemerสำหรับ Node.js ซึ่งสร้างบนAjv (อีก JSON Schema ตรวจสอบ)
Stennie

1

แน่นอนว่าคำตอบดั้งเดิมนั้นถูกต้องการตรวจสอบความถูกต้องก่อนที่จะมาถึงฐานข้อมูลนั้นเป็นแนวปฏิบัติที่ดีที่สุด แต่ตามจริงแล้วหากคุณต้องการไล่มันออกมาเหมือนตอนนี้คุณสามารถลบการตรวจสอบออกจาก Schema ได้ชั่วคราว ขึ้นในคอลเลกชัน

หากจำเป็นต้องมีฟิลด์ แต่ฟิลด์นั้นแสดงว่าขาดหายไปว่างเปล่าหรือผิดพลาดอย่างน้อยก็ทำให้การค้นหาของคุณแคบลง หากข้อมูลถูกต้องให้ดูที่การตรวจสอบความถูกต้องที่ระบุใน Schema

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.