मेरे पास "श्रेणियां" नामक एक विशेषता है जिसमें मानचित्रों की एक सूची है। मैं इसकी विशिष्ट आईडी का उपयोग करके इनमें से केवल एक मानचित्र को अपडेट करने में सक्षम होना चाहता हूं। मैंने अपना डेटा इस प्रकार संरचित किया है:

"EstablishmentID": "12345abc",
"Categories": [
{
  "408eec12-2415-45d3-b703-b8ba0d55261c": {        
    "CategoryName": "Cat11",        
    "CategoryVisible": true
  }
},
{
  "586a95ab-e39d-4711-8770-f60dedcf6059": {    
    "CategoryName": "Cat2",       
    "CategoryVisible": true
  }
}
]

जब मैं इन श्रेणियों में से किसी एक को अपडेट करना चाहता हूं, तो मैं एक एसईटी अपडेट अभिव्यक्ति का उपयोग करता हूं और (मेरी जानकारी में) मैं दस्तावेज़ पथ को सही ढंग से इनपुट कर रहा हूं। यहाँ अद्यतन अभिव्यक्ति के लिए मेरा कोड है:

UpdateItemRequest request = new UpdateItemRequest
        {
            TableName = "Menu",
            Key = new Dictionary<string, AttributeValue> { { "EstablishmentID", new AttributeValue { S = establishmentID.ToString() } } },
            ExpressionAttributeNames = new Dictionary<string, string>
            {
                {"#C", "Categories"},
                {"#I", category.CategoryID.ToString()}
            },
            ExpressionAttributeValues = new Dictionary<string, AttributeValue>
            {
                {":CategoryToUpdate", new AttributeValue{M=values } }
            },
            UpdateExpression = "SET #C.#I = :CategoryToUpdate"

        };

जब मैं अपना अपडेट चलाने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिलती है:

अद्यतन अभिव्यक्ति में प्रदान किया गया दस्तावेज़ पथ अद्यतन के लिए अमान्य है

मेरे लिए ऐसा लगता है कि वस्तु श्रेणियाँ => [श्रेणी आईडी] खोजने में सक्षम नहीं है। क्या किसी को पता है कि सूची में मेरी विशिष्ट श्रेणी खोजने में सक्षम होने के संबंध में मुझे क्या याद आ रहा है।

अग्रिम में धन्यवाद। ली

1
Lee Evans 1 जून 2020, 20:34

1 उत्तर

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

आप इस तरह की सूची और क्वेरी का उपयोग नहीं कर सकते। #C.#I, Categories.408eec12-2415-45d3-b703-b8ba0d55261c को संदर्भित करेगा। अपना प्रारूप इसमें बदलें:

"EstablishmentID": "12345abc",
"Categories": {
  "408eec12-2415-45d3-b703-b8ba0d55261c": {        
    "CategoryName": "Cat11",        
    "CategoryVisible": true
  },
  "586a95ab-e39d-4711-8770-f60dedcf6059": {    
    "CategoryName": "Cat2",       
    "CategoryVisible": true
  }
}

तब आपकी क्वेरी काम करनी चाहिए।

2
cyberwombat 1 जून 2020, 18:24