मैं हाल ही में node.js
में bson
(बाइनरी JSON) मॉड्यूल लोड करने का प्रयास कर रहा था। एपीआई दस्तावेज़ अस्पष्ट थे, इसलिए मैंने सोचा कि वस्तुओं का निरीक्षण करने से मेरी मदद मिलेगी। निरीक्षण के परिणाम परेशान थे।% j विनिर्देशक console.log में कुछ गुणों को छोड़कर
अंत में मुझे पता चला कि ऐसा इसलिए था क्योंकि मैं %j
का उपयोग कर रहा था जो "झूठ" है - यह किसी ऑब्जेक्ट की शब्दकोश कुंजी को प्रिंट नहीं करता है! (मैं "विशेषताओं" के लिए पाइथन शब्दावली का उपयोग कर रहा हूं क्योंकि एक बिंदु के साथ संदर्भित चीजों और ब्रैकेट के संदर्भ में चीजों के लिए "शब्दकोश कुंजी", क्योंकि मुझे जेएस में इन चीजों के लिए उचित नाम नहीं पता हैं।)
यहां है एक उदाहरण:
var bson = require("bson");
console.log("bson as %%j: %j", bson);
console.log("bson as console.log: ", bson);
और यहाँ उत्पादन है:
bson as %j: {"BSONPure":{},"BSONNative":{}}
bson as console.log: { BSONPure:
{ Code: [Function: Code],
Symbol: [Function: Symbol],
BSON:
{ [Function: BSON]
BSON_INT32_MAX: 2147483647,
BSON_INT32_MIN: -2147483648,
BSON_INT64_MAX: 9223372036854776000,
BSON_INT64_MIN: -9223372036854776000,
...
मैंने सोचा था कि के बाद से x.key
x["key"]
रूप में ही है, इसका मतलब है कि गुण और शब्दकोश कुंजी "एक ही बात" जे एस में हैं। मैंने प्रयोग किया कि BSON.BSONPure
{}
है, हालांकि BSON.BSONPure.BSON
और BSON.BSONPure["BSON"]
function
ऑब्जेक्ट हैं!
इससे मुझे विश्वास होता है कि जो भी "%j"
करता है, किसी भी तरह से कुछ चाबियाँ छोड़ना चाहिए। यह कैसे तय करता है कि किन कुंजीों को बाहर निकालना है? यह ऐसा क्यों करेगा? जेएस कभी-कभी वास्तव में भ्रमित भाषा है!
संबंधित Github टिकट: https://github.com/mongodb/js-bson/issues/97
दोनों चीजें समान हैं (जैसा कि आप कहते हैं, 'x.key' और 'x [" key "]' पूरी तरह समतुल्य हैं), और उन्हें * गुण * कहा जाता है। – Bergi