craiggwilson Show 16-08-2012 21. 28. 25 UTC Permalink Saran saya kepada Anda adalah untuk tidak mendorong ObjectId keluar melalui api apa punSebaliknya, gunakan string atau panduan. Entitas Anda dapat didekorasi dengan atribut (atau melalui api konfigurasi) memberitahunya untuk menyimpan tertentu string sebagai ObjectIds di MongoDB, tetapi mari Anda bekerja dengannya sebagai string kode bisnis Anda Tes kelas { [BsonRepresentation(BsonType. ObjectId)] string publik Id {dapatkan; } Anda dipersilakan untuk mengajukan tiket di jira. mongodb. org sebagai permintaan fitur Kemungkinan kami tidak akan menerapkan ini karena tidak aman, sebagian besar untuk Anda. Solusi di atas adalah keikutsertaan, sedangkan konversi implisit tidak. ObjectId bukan string dan menggabungkan keduanya bisa sangat bermasalah jika tidak dimaksudkan
-- yngndrw 16-08-2012 21. 50. 37 UTC Permalink Terima kasih balasannyaNamun, saya melihat poin tentang konversi yang diikutsertakan dan eksplisit Saya tidak setuju bahwa menggunakan string atau GUID akan menyelesaikan masalah Solusi yang Anda posting (Atau menggunakan GUID dalam hal ini) masih bermasalah masalah yang sama bahwa mereka tidak aman - Karena lapangan tidak lagi kuat diketik sebagai ObjectId, tidak ada yang menghentikan logika bisnis menempatkan ID acak di sana. Ini kemudian menggeser titik di mana kesalahan dapat terjadi dari serialisasi input UI ke serialisasi database level, artinya ada lebih banyak kode yang bisa disisipkan nilai yang salah Idealnya, setiap data yang tidak valid akan ditangkap (Dan dimunculkan sebagai kesalahan) sedini mungkin mungkin, yang dalam hal ini adalah serialisasi SignalR melempar pengecualian saat nilai string yang tidak valid diteruskan Selain itu, ObjectIds dapat dikonversi ke / dari string tanpa kehilangan apa pun dan string diperlukan untuk banyak serialisasi berbasis web. (XML, JSON, dll) Kesalahan yang Anda lihat sebenarnya tidak berbeda dengan melewati a string non-numerik ke dalam pengikat model MVC di mana ia mengharapkan bilangan bulat - Itu akan gagal dengan benar For these reasons I believe that ObjectId <-> string conversion is safe dalam alasan, tetapi saya akan mempertimbangkan kembali apakah saya dapat melakukan konversi secara eksplisit dengan cara yang bagus. Saat ini saya hanya memiliki parameter string yang kemudian saya konversikan ke ObjectId menggunakan ObjectId. TryParse, tapi saya suka ide adil bisa memiliki metode yang mengambil parameter ObjectId dan untuk itu "bekerja saja". Apa yang saya miliki sekarang adalah eksplisit tetapi itu bukan solusi yang sangat bersih menurut pendapat saya Terima kasih, -Andrew
-- craiggwilson 17-08-2012 01. 31. 21 UTC Permalink Jika SignalR, WebApi, MVC. adalah satu-satunya hal yang menggunakan driver, maka itumungkin masuk akal untuk membuat segalanya sedikit lebih mudah bagi mereka, tapi ternyata tidak benar dan kami perlu mempertimbangkan semua pengguna Terlepas dari itu, saya pikir mungkin ada cara yang cukup bersih untuk melakukan ini jika Anda masih ingin menggunakan ObjectIds yang diketik di API Anda. Json. dukungan .NET converter secara native. Sepertinya Anda bisa menulis satu dan mendaftarkannya depan jika Anda tahu Anda menggunakan Json. MVC dan WebApi memungkinkan Anda menulis file ModelBinder untuk ObjectId. Saya belum mengotak-atik SignalR, tapi mungkin itu mendukung ini juga
-- yngndrw 17-08-2012 20. 20. 42 UTC Permalink manfaat dari ini Saya memang mencoba menggunakan kelebihan JSON-Konversi SignalR tetapi sepertinya tidak kerja. Melihat melalui kode mereka, saya menemukan alasannya objek publik ConvertTo(Tipe tipe) { // A non generic implementation of ToObject menggunakan (var jsonReader = new JTokenReader(_value)) { var serializer = new JsonSerializer(); serialisasi kembali. Deserialisasi(jsonReader, ketik); } } Ini adalah metode yang mem-parsing setiap parameter dan alih-alih menggunakan serialiser yang telah saya tentukan, ini hanya menggunakan JsonSerializer generik. Tampaknya seluruh bagian masih banyak pekerjaan yang sedang berjalan, jadi saya rasa ini akan diselesaikan di masa mendatang. Sementara itu saya hanya akan mengonversinya secara manual dengan menggunakan parameter string Terima kasih atas bantuan Anda. . )
-- Bagaimana cara mengubah string menjadi ObjectId di Jawa?ObjectId mongodbid = ObjectId. Parse(Nilai string Anda);
Bagaimana cara mengubah ObjectId menjadi string MongoDB?toString() Mengembalikan representasi string dari ObjectId().
Apa itu ObjectId MongoDB BSON?ID Objek diperlakukan sebagai kunci utama dalam setiap koleksi MongoDB. Ini adalah pengidentifikasi unik untuk setiap dokumen atau catatan . Sintaksis. ObjectId(
Bagaimana cara mengubah ObjectId menjadi string dengan Python?ObjectId. toString() mengembalikan representasi string dari objek ObjectId(). |