Saya mencoba menghapus dan memperbarui catatan di cosmosDB menggunakan kode graphql/nodejs saya dan mendapatkan kesalahan - "Entitas dengan id yang ditentukan tidak ada di sistem". Ini kode saya

deleteRecord: async (root, id) => {
  const { resource: result } = await container.item(id.id, key).delete();
  console.log(`Deleted item with id: ${id}`);
},

Entah bagaimana kode di bawah ini tidak dapat menemukan catatan, bahkan "container.item(id.id, key).read()" tidak berfungsi.

await container.item(id.id, key)

Tetapi jika saya mencoba menemukan catatan menggunakan spesifikasi kueri, itu berfungsi

await container.items.query('SELECT * from c where c.id = "'+id+'"' ).fetchNext()

FYI- Saya dapat mengambil semua catatan dan membuat item baru, jadi Koneksi ke DB dan membaca/menulis tidak menjadi masalah.

Apa lagi yang bisa terjadi? Setiap penunjuk yang terkait dengan ini akan sangat membantu.

Terima kasih sebelumnya.

0
user837593 31 Oktober 2020, 01:16

1 menjawab

Jawaban Terbaik

Sepertinya Anda memasukkan kunci yang salah ke item(id,key). Menurut Catatan dokumentasi:

Dalam metode "perbarui" dan "hapus", item harus dipilih dari database dengan memanggil container.item(). Dua parameter yang diteruskan adalah id item dan kunci partisi item. Dalam hal ini, kunci partisi adalah nilai bidang "kategori".

Jadi, Anda harus meneruskan nilai kunci partisi Anda, bukan jalur kunci partisi Anda. Misalnya, jika Anda memiliki dokumen seperti di bawah ini, dan kunci partisi Anda adalah '/kategori', Anda perlu menggunakan kode ini await container.item("xxxxxx", "movie").

{
    "id":"xxxxxx",
    "category":"movie"
}
1
Steve Zhao 2 November 2020, 02:47