मेरे पास "श्रेणियां" नामक एक विशेषता है जिसमें मानचित्रों की एक सूची है। मैं इसकी विशिष्ट आईडी का उपयोग करके इनमें से केवल एक मानचित्र को अपडेट करने में सक्षम होना चाहता हूं। मैंने अपना डेटा इस प्रकार संरचित किया है:
"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 उत्तर
आप इस तरह की सूची और क्वेरी का उपयोग नहीं कर सकते। #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
}
}
तब आपकी क्वेरी काम करनी चाहिए।
संबंधित सवाल
नए सवाल
.net
.NET कोर के बारे में प्रश्नों के लिए उपयोग न करें - इसके बजाय [.net-core] का उपयोग करें। .NET फ्रेमवर्क मुख्य रूप से माइक्रोसॉफ्ट विंडोज ऑपरेटिंग सिस्टम के लिए डिज़ाइन किया गया एक सॉफ्टवेयर फ्रेमवर्क है। इसमें बेस क्लास लाइब्रेरी, कॉमन लैंग्वेज रनटाइम (आमतौर पर सीएलआर के रूप में संदर्भित), कॉमन टाइप सिस्टम (आमतौर पर सीटीएस के रूप में संदर्भित) और डायनेमिक भाषा रनटाइम का कार्यान्वयन शामिल है। यह C #, VB.NET, F # और C ++ / CLI सहित कई प्रोग्रामिंग भाषाओं का समर्थन करता है।