2016-08-26 12 views
5

मैं अपने लैम्ब्डा फ़ंक्शन के अंदर किसी सर्वर से जेएसओएन में एक एक्सएमएल स्ट्रिंग को परिवर्तित करने की कोशिश कर रहा हूं।
मैंने डायनामो डीबी का उपयोग कर सर्वर से प्राप्त XML उत्तर को अनुकरण करने के लिए यह सरल उदाहरण स्थापित किया है।बाहरी जेएस पुस्तकालयों का उपयोग कर अमेज़ॅन लैम्ब्डा में जेएसओएन को एक्सएसएल पार्सिंग

'use strict'; 

var AWS = require('aws-sdk'); 
var docClient = new AWS.DynamoDB.DocumentClient({region: 'eu-west-1'}); 


exports.handler = function (e, ctx, callback){  
    let table = "dsbTable"; 
    let bpNumber = 1337; 
    var test; 
    var x2js = new X2JS(); 
    let params = { 
      TableName: table, 
      Key:{ 
       "bpNumber": bpNumber 
      }, 
     }; 
    docClient.get(params, function(err, data) { 
      if (err) { 
       console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2)); 
       callback(err, null); 
      } else { 
       console.log("GetItem succeeded:", JSON.stringify(data, null, 2)); 
       console.log('test' +data.Item.getBp); 
       //var jsonObj = x2js.xml_str2json(data.Item.getBp); 
       //console.log(jsonObj); 

       callback(null, data); 
      } 

    }); 

} ; 

आइटम हो रही बस ठीक काम करता है और इस

{ 
    "Item": { 
    "getBp": "<message version=\"1.0\" system=\"AVS/3\"><header><client>553</client><avs3-sales-organization>7564</avs3-sales-organization><avs3-service-provider>DSD</avs3-service-provider></header><body><business-partner><salutation-code>01</salutation-code><titel-code-academic/><titel-academic/><titel-code-royal/><titel-royal/><job-titel/><last-name1>Pickle</last-name1><last-name2/><first-name>N</first-name><street/><street-suffix/><street-number/><street-number-suffix/><address-line-1>10 Waterside Way</address-line-1><address-line-2/><address-line-3/><zipcode>NN4 7XD</zipcode><country-code>GB</country-code><city>NORTHAMPTON</city><district/><region-code>NH</region-code><region-text>Northamptonshire</region-text><company1/><company2/><company3/><department/><po-box/><po-box-zipcode/><po-box-city/><po-box-country-code/><major-customer-zipcode/><address-source/><advertisement>Y</advertisement><category/><bp-number>1100000772</bp-number><bp-number-external/><bp-group>ABON</bp-group><eu-sales-tax-number/><bic-master-number/><sector/><communication><communication-type>WW</communication-type><communication-value>[email protected]</communication-value><communication-default>Y</communication-default></communication><attribute><attribute-type>ACC</attribute-type><attribute-value>Y</attribute-value></attribute><attribute><attribute-type>OIEMEX</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OINLIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OISMEX</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OISMIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOEMIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOFXEX</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOFXIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOPTEX</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOPTIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOTEEX</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>OOTEIN</attribute-type><attribute-value>N20121211</attribute-value></attribute><attribute><attribute-type>THEDSU</attribute-type><attribute-value/></attribute></business-partner></body></message>", 
    "bpNumber": 1337 
    } 
} 

मेरे मुख्य मुद्दा तरह अब लौटा दिया जाता है (वर्तमान में मैं सिर्फ रूपांतरण चलते रहने के लिए कोशिश कर रहा हूँ) है कि मैं समझ नहीं कैसे कर सकते हैं मैं this one here

मुझे उम्मीद है कि इस मामले में मेरा कोड पूरी तरह से बेकार नहीं है और एक आसान समाधान है।

+1

'var jsonObj = x2js.xml_str2json (data.Item.getBp) 'काम नहीं करता है? मुझे लगता है कि आप सिर्फ जेएस फाइलों का संदर्भ नहीं दे रहे हैं। –

+0

सबसे पहले, आपके समय के लिए धन्यवाद। हाँ, शायद यही कारण है। लेकिन मैं यह नहीं समझ सकता कि यह मेरे लैम्ब्डा फ़ंक्शन के अंदर कैसे संदर्भित करता है। मैं पूरी एडब्ल्यूएस चीज के लिए बहुत नया हूँ। और उस मामले के लिए जावास्क्रिप्ट ... मुझे शायद लैम्ब्डा के लिए बाहरी पुस्तकालयों तक पहुंचने में सक्षम होने के लिए ऐसा कुछ करना होगा http://docs.aws.amazon.com/de_de/lambda/latest/dg/nodejs- बनाने तैनाती-pkg.html। मैंने अपने लैम्ब्डा फ़ंक्शन के अंदर xml2json लाइब्रेरी से कोड चिपकाने का प्रयास किया है, लेकिन यह केवल त्रुटियों को फेंकता है: -/ –

+0

इस लिंक को देखें: http://stackoverflow.com/questions/950087/how-to-include-a -javascript-file-in-another-javascript-file –

उत्तर

10

आप इस रास्ते से गुज़र रहे हैं कि कई नए लैम्ब्डा उपयोगकर्ता चले गए हैं।

लैम्ब्डा के साथ, यह बिल्कुल आसान है, आप बस अपना कोड लिखें और यह सत्यापित करें कि यह अपेक्षित काम करता है - मेरा मतलब है आपके कंप्यूटर पर।

एक बार जब आप यह पुष्टि की है, इस प्रकार कार्य करें:

  1. संपूर्ण फ़ोल्डर की सामग्री, node_modules निर्देशिका और किसी भी निर्भरता जिसे आप उपयोग सहित ज़िप बंद करें।
  2. इसे Lambda पर अपलोड करें।

आप गलती के रूप में अच्छी वाले फ़ोल्डर ज़िप किया गया है, तो वह ठीक है, सिर्फ लैम्ब्डा अद्यतन करने के लिए से स्क्रिप्ट चलाने के लिए सुनिश्चित करें कि: (अपने मॉड्यूल से function_name निर्यात करने के लिए मत भूलना) dir_name/file_name.function_name

+0

धन्यवाद, यह काम किया। लेकिन निश्चित रूप से एक चीज को ठीक करने के लिए, मुझे अगली त्रुटि दी। मैंने पोस्ट की गई xml2json लाइब्रेरी का उपयोग करके मुझे "संदर्भ त्रुटि: विंडो परिभाषित नहीं किया गया है"। जाहिर है ऐसा इसलिए है क्योंकि मैं सर्वरसाइड पर क्लाइंटसाइड स्क्रिप्ट का प्रयास कर रहा था (?) हालांकि, मैं एक अलग पुस्तकालय का उपयोग करके इसे प्राप्त करने में सक्षम था। –

+0

यह एक और सवाल है :)। आप इसे पोस्ट कर सकते हैं और आपके द्वारा उपयोग किए गए कोड को पेस्ट कर सकते हैं और मैं इसे देख लूंगा। बस नई पोस्ट के लिंक को पेस्ट करें। – johni

+0

सभी अच्छे। अन्य पुस्तकालय का उपयोग अभी ठीक से काम करता है। एक बार फिर धन्यवाद –

0

हमेशा हैंडलर नाम <filename>.<handler> फ़ंक्शन नाम है> और यदि filename गलत तरीके से उल्लेख किया गया है तो क्लाउडवॉच लॉग में भी ऐसी त्रुटि फेंक दी गई है।

संबंधित मुद्दे