मैं एडब्ल्यूएस-एसडीके के साथ नोड का उपयोग किसी डायनेमो डीबी टेबल में ऑब्जेक्ट्स की नेस्टेड सूची से किसी आइटम (ऑब्जेक्ट) को निकालने का प्रयास करने के लिए करता हूं, लेकिन यह जो मैं उम्मीद कर रहा था उससे कहीं अधिक जटिल लगता है।

मैंने पहले इसी तरह के एक प्रश्न के लिए इस प्रतिक्रिया को देखा था, लेकिन उन्होंने छोड़ दिया कि उन्होंने वास्तव में वह सूचकांक कैसे प्राप्त किया जिसे वे निकालने का प्रयास कर रहे हैं

DynamoDB तालिका आइटम में एक सूची प्रकार विशेषता से एक प्रविष्टि जोड़ें या निकालें

मेरे पास जो है वह इस तरह दिखता है:

{
  id: "1",
  resources: {
    resource1: [
      {
        resource1Id: "63236",
        name: "This is the first resource1 resource"
      }
    ],
    resource2: [
      {
        resource2Id: "63236",
        name: "This is the first resource2 resource"
      },
      {
        resource2Id: "12345",
        name: "I want to remove this"
      }
    ]
  {
}

अब मान लें कि मैं इसे हटाना चाहता हूं:

{
  resource2Id: "12345",
  name: "I want to remove this"
}

संसाधन 2 सूची से

मुझे लगता है कि मुझे ऐसा कुछ करने की ज़रूरत है:

    query = "REMOVE resources.resource2[%d]" % (index_to_be_removed)

    const updateParams = {
      TableName: myTable,
      Key: {
        "id": myId
      },
      "UpdateExpression": "query",
      "ReturnValues": "UPDATED_NEW"
    }
    return await this.dynamodbClient.update(updateParams).promise()

लेकिन मुझे यकीन नहीं है कि index_to_be_removed कैसे प्राप्त करें। निश्चित रूप से वे मुझसे एक अलग प्रश्न करने और सूची के माध्यम से स्वयं खोज करने की अपेक्षा नहीं करते हैं? ऐसा लगता है कि सूची में आईडी को देखने और हटाने के लिए उन्हें एक कॉल में मौजूद होने पर इसे हटाने का एक तरीका होना चाहिए।

0
skyleguy 20 अक्टूबर 2020, 19:01

1 उत्तर

सबसे बढ़िया उत्तर

दुर्भाग्य से, DynamoDB UpdateExpression के भीतर से किसी इंडेक्स को खोजने का कोई तरीका प्रदान नहीं करता है। यह कुछ ऐसा है जो आपको अपने आवेदन कोड में करना होगा।

एक-से-अनेक संबंधों को मॉडल करने के लिए जटिल विशेषताओं का उपयोग करने का यह एक दोष है।

0
Seth Geoghegan 20 अक्टूबर 2020, 21:35