Tidak dapat secara implisit mengonversi tipe string ke mongodb bson objectid

craiggwilson

16-08-2012 21. 28. 25 UTC

Permalink

Saran saya kepada Anda adalah untuk tidak mendorong ObjectId keluar melalui api apa pun
Sebaliknya, 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


Halo,
Alangkah baiknya jika ObjectId dapat secara implisit dikonversi ke / dari a
rangkaian
Contohnya adalah ketika menggunakan hub SignalR yang memiliki metode yang memakan waktu
parameter ObyekId
Serialiser SignalR JSON tidak pernah dipanggil (Kemungkinan bug dengan SignalR
di mana itu bukan struktur serialisasi, tapi itu masalah yang berbeda) dan
SignalR akhirnya hanya mencoba memasukkan nilai string ke dalam ObjectId
parameter. Ini menyebabkan kesalahan karena pemeran implisit tidak bisa
dilakukan
Selain itu, JsonConverter perlu ditentukan terhadap setiap ObjectId
properti model saya agar dapat diserialisasikan dengan benar. (Jika tidak, mereka
keluar saja sebagai [Object. ])
Terima kasih,
-Andrew

--
Anda menerima pesan ini karena Anda berlangganan Google
Mengelompokkan grup "pengguna mongodb".
Untuk memposting ke grup ini, kirim email ke mongodb-user-/***@public. gmane. org
Untuk berhenti berlangganan dari grup ini, kirim email ke
mongodb-user+unsubscribe-/***@public. gmane. org
Lihat juga saluran IRC -- freenode. net#mongodb

yngndrw

16-08-2012 21. 50. 37 UTC

Permalink

Terima kasih balasannya

Namun, 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


Saran saya kepada Anda adalah untuk tidak mendorong ObjectId keluar melalui api apa pun
Sebaliknya, 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 fitur
meminta. Kemungkinannya adalah kami tidak akan menerapkan ini karena memang tidak demikian
aman, sebagian besar untuk Anda. Solusi di atas adalah opt-in, sedangkan implisit
konversi tidak. ObjectId bukan string dan untuk mencampur keduanya bisa
sangat bermasalah jika tidak dimaksudkan


Halo,
Alangkah baiknya jika ObjectId dapat secara implisit dikonversi ke / dari a
rangkaian
Contohnya adalah ketika menggunakan hub SignalR yang memiliki metode yang memakan waktu
parameter ObyekId
Serialiser SignalR JSON tidak pernah dipanggil (Kemungkinan bug dengan SignalR
di mana itu bukan struktur serialisasi, tapi itu masalah yang berbeda) dan
SignalR akhirnya hanya mencoba memasukkan nilai string ke dalam ObjectId
parameter. Ini menyebabkan kesalahan karena pemeran implisit tidak bisa
dilakukan
Selain itu, JsonConverter perlu ditentukan terhadap setiap ObjectId
properti model saya agar dapat diserialisasikan dengan benar. (Jika tidak, mereka
keluar saja sebagai [Object. ])
Terima kasih,
-Andrew

--
Anda menerima pesan ini karena Anda berlangganan Google
Mengelompokkan grup "pengguna mongodb".
Untuk memposting ke grup ini, kirim email ke mongodb-user-/***@public. gmane. org
Untuk berhenti berlangganan dari grup ini, kirim email ke
mongodb-user+unsubscribe-/***@public. gmane. org
Lihat juga saluran IRC -- freenode. net#mongodb

craiggwilson

17-08-2012 01. 31. 21 UTC

Permalink

Jika SignalR, WebApi, MVC. adalah satu-satunya hal yang menggunakan driver, maka itu
mungkin 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


Terima kasih balasannya
Namun, 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 menderita
dari masalah yang sama bahwa mereka tidak aman - Karena lapangan tidak lagi
sangat diketik sebagai ObjectId, tidak ada yang menghentikan logika bisnis
dari menempatkan ID acak di sana. Ini kemudian menggeser titik di mana
kesalahan dapat terjadi dari serialisasi input UI ke database
tingkat serialisasi, artinya ada jumlah kode yang lebih besar
bisa memasukkan 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
loss dan string diperlukan untuk banyak serialisasi berbasis web. (XML,
JSON, dll) Kesalahan yang Anda lihat sebenarnya tidak berbeda dengan lewat
string non-numerik ke dalam pengikat model MVC yang mengharapkan bilangan bulat
- Ini 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


Saran saya kepada Anda adalah untuk tidak mendorong ObjectId keluar melalui api apa pun
Sebaliknya, 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 fitur
meminta. Kemungkinannya adalah kami tidak akan menerapkan ini karena memang tidak demikian
aman, sebagian besar untuk Anda. Solusi di atas adalah opt-in, sedangkan implisit
konversi tidak. ObjectId bukan string dan untuk mencampur keduanya bisa
sangat bermasalah jika tidak dimaksudkan


Halo,
Alangkah baiknya jika ObjectId dapat secara implisit dikonversi ke / dari a
rangkaian
Contohnya adalah ketika menggunakan hub SignalR yang memiliki metode yang memakan waktu
parameter ObyekId
Serialiser SignalR JSON tidak pernah dipanggil (Kemungkinan bug dengan SignalR
di mana itu bukan struktur serialisasi, tapi itu masalah yang berbeda) dan
SignalR akhirnya hanya mencoba memasukkan nilai string ke dalam ObjectId
parameter. Ini menyebabkan kesalahan karena pemeran implisit tidak bisa
dilakukan
Selain itu, JsonConverter perlu ditentukan terhadap setiap ObjectId
properti model saya agar dapat diserialisasikan dengan benar. (Jika tidak, mereka
keluar saja sebagai [Object. ])
Terima kasih,
-Andrew

--
Anda menerima pesan ini karena Anda berlangganan Google
Mengelompokkan grup "pengguna mongodb".
Untuk memposting ke grup ini, kirim email ke mongodb-user-/***@public. gmane. org
Untuk berhenti berlangganan dari grup ini, kirim email ke
mongodb-user+unsubscribe-/***@public. gmane. org
Lihat juga saluran IRC -- freenode. net#mongodb

yngndrw

17-08-2012 20. 20. 42 UTC

Permalink

Memikirkannya, saya setuju bahwa itu hanya proyek web yang akan melakukannya
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 on JToken
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. . )


Jika SignalR, WebApi, MVC. adalah satu-satunya hal yang menggunakan driver, maka itu
mungkin 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


Terima kasih balasannya
Saya melihat pentingnya konversi menjadi keikutsertaan dan eksplisit,
namun saya tidak setuju bahwa menggunakan string atau GUID akan menyelesaikan masalah
Solusi yang Anda posting (Atau menggunakan GUID dalam hal ini) masih menderita
dari masalah yang sama bahwa mereka tidak aman - Karena lapangan tidak lagi
sangat diketik sebagai ObjectId, tidak ada yang menghentikan logika bisnis
dari menempatkan ID acak di sana. Ini kemudian menggeser titik di mana
kesalahan dapat terjadi dari serialisasi input UI ke database
tingkat serialisasi, artinya ada jumlah kode yang lebih besar
bisa memasukkan nilai yang salah
Idealnya setiap data yang tidak valid akan ditangkap (Dan dimunculkan sebagai kesalahan) sebagai
sedini mungkin, yang dalam hal ini adalah serialisasi SignalR
hal-hal melempar pengecualian ketika nilai string yang tidak valid diteruskan
Selain itu, ObjectIds dapat dikonversi ke / dari string tanpa
loss dan string diperlukan untuk banyak serialisasi berbasis web. (XML,
JSON, dll) Kesalahan yang Anda lihat sebenarnya tidak berbeda dengan lewat
string non-numerik ke dalam pengikat model MVC yang mengharapkan bilangan bulat
- Ini 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


Saran saya kepada Anda adalah untuk tidak mendorong ObjectId keluar melalui api apa pun
Sebaliknya, 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 fitur
meminta. Kemungkinannya adalah kami tidak akan menerapkan ini karena memang tidak demikian
aman, sebagian besar untuk Anda. Solusi di atas adalah opt-in, sedangkan implisit
konversi tidak. ObjectId bukan string dan untuk mencampur keduanya bisa
sangat bermasalah jika tidak dimaksudkan


Halo,
Alangkah baiknya jika ObjectId dapat secara implisit dikonversi ke / dari a
rangkaian
Contohnya adalah ketika menggunakan hub SignalR yang memiliki metode yang memakan waktu
parameter ObyekId
Serialiser SignalR JSON tidak pernah dipanggil (Kemungkinan bug dengan
SignalR di mana itu bukan struktur serialisasi, tapi itu berbeda
matter) dan SignalR akhirnya hanya mencoba memasukkan nilai string ke dalam
parameter ObyekId. Ini menyebabkan kesalahan karena pemeran implisit tidak bisa
dilakukan
Selain itu, JsonConverter perlu ditentukan untuk masing-masing
Properti ObjectId dari model saya agar dapat diserialisasi dengan benar
(Kalau tidak, mereka hanya muncul sebagai [Object. ])
Terima kasih,
-Andrew

--
Anda menerima pesan ini karena Anda berlangganan Google
Mengelompokkan grup "pengguna mongodb".
Untuk memposting ke grup ini, kirim email ke mongodb-user-/***@public. gmane. org
Untuk berhenti berlangganan dari grup ini, kirim email ke
mongodb-user+unsubscribe-/***@public. gmane. org
Lihat juga saluran IRC -- freenode. net#mongodb

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().