ऐसा इसलिए है क्योंकि जिस दस्तावेज़ वस्तु को आप नेवला से वापस प्राप्त करते हैं, वह सीधे गुणों तक नहीं पहुँचती है। यह प्रोटोटाइप श्रृंखला का उपयोग करता है इसलिए hasOwnProperty
झूठी वापसी (मैं इसे बहुत सरल कर रहा हूं)।
आप दो चीजों में से एक कर सकते हैं:toObject()
use का उपयोग करें इसे एक सादे वस्तु में बदलने के लिए और फिर आपके चेक इस प्रकार काम करेंगे:
var userPOJO = User.toObject();
if ( !(userPOJO.hasOwnProperty('local') && userPOJO.local.hasOwnProperty('password')) ) {...}
या आप सीधे मूल्यों की जांच कर सकते हैं:
if ( !(User.local && User.local.password) ) {...}
चूंकि दोनों में से किसी भी संपत्ति का गलत मूल्य नहीं हो सकता है, इसलिए इसे परीक्षण के लिए काम करना चाहिए यदि वे आबाद हैं।
संपादित करें:एक और चेक जिसका मैं उल्लेख करना भूल गया था, वह है मोंगोज़ के बिल्ट इन get
. का उपयोग करना विधि:
if (!User.get('local.password')) {...}