Menyelesaikan Masalah Penggunaan FindId() dalam Pustaka Mgo Golang
Apabila cuba mendapatkan semula dokumen menggunakan fungsi FindId() dalam mgo, ralat mungkin timbul disebabkan oleh nilai ObjectId yang tidak sah. Mesej ralat "ObjectIDs mestilah betul-betul 12 bait panjang" menunjukkan bahawa ID yang disediakan tidak dalam format yang dijangkakan.
Memahami Format ObjectId
An ObjectId dalam MongoDB ialah nilai 12-bait yang mengenal pasti dokumen secara unik. Ia biasanya diwakili sebagai rentetan heksadesimal dengan 24 aksara. Pustaka mgo menjangkakan ObjectId akan disediakan sama ada sebagai objek bson.ObjectId atau perwakilan binari 12 bait.
Menyelesaikan Isu
Dalam kod yang disediakan, message.ID ialah rentetan yang mengandungi perwakilan heksadesimal ObjectId. Untuk menggunakan nilai ini dengan FindId(), ia mesti ditukar kepada objek bson.ObjectId menggunakan fungsi bson.ObjectIdHex():
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
Dengan menggunakan bson.ObjectIdHex(), anda memastikan bahawa yang disediakan rentetan ditafsirkan dengan betul dan ditukar kepada nilai ObjectId yang sah, menyelesaikan ralat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'ObjectIDs mestilah tepat 12 bait\' Semasa Menggunakan FindId() dalam Pustaka Mgo Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!