2015-04-25 14 views
6

में जेएसओएन के रूप में डेटा कैसे वापस करें जब मैं एक सेक्विलाइज क्वेरी करता हूं तो यह मुझे एक ऑब्जेक्ट (या सरणी) देता है जो मैं अनुमान लगा रहा हूं एक सीक्वेलिज मॉडल (या मॉडल की सरणी (संग्रह प्रकार ??) है लेकिन यह कहीं भी दस्तावेज नहीं है, इसलिए मैं अनुमान लगा रहा हूं। मैं हमेशा जेएसओएन होने के परिणाम पसंद करूंगा। क्या इस बात को मजबूर करने के लिए मैं कुछ भी पूछ सकता हूं? अगर मैं संभव हो तो जेएसओएन बनने के लिए हर परिणाम मालिश करने के लिए मैं मालिश करना पसंद नहीं करूंगा।सीक्वेलिज़

console.log(JSON.stringify(users)) 

तो वहाँ कुछ क्रमबद्धता में बनाया गया:

The documentation शो इस एक स्ट्रिंग वापस जाने के लिए। अभी मैं यह कर रहा हूँ, गैर-दस्तावेजी toJSON() विधि का उपयोग कर:

query().then(function(result) { 
    if(result.length) { 
     return result.toJSON(); 
    } else { 
     return result.map(function(item) { 
      return item.toJSON(); 
     }); 
    } 
}); 

जो बोझिल है।

उत्तर

2

यदि आप एक क्वेरी कर रहे हैं जिसके साथ कई परिणाम हैं तो आपको एक सरणी वापस लौटने की उम्मीद करनी चाहिए। आपको यह पता होना चाहिए कि परिणाम सरणी में प्रत्येक तत्व एक JSON ऑब्जेक्ट है।

आप इस प्रकार का भी क्षेत्र तक पहुँचने के लिए सक्षम होना चाहिए: result[0].myfieldname

+0

क्या इसका मतलब है कि सीक्वेलिज़ को हमेशा JSON के रूप में परिणाम लौटने के लिए मजबूर करना असंभव है? –

+1

इसका मतलब है कि वे पहले से ही JSON में होना चाहिए। अंदर क्या है यह देखने के लिए JSON.stringify() का उपयोग करने का प्रयास करें। आपका कोड इस तरह कुछ दिखना चाहिए: 'क्वेरी()। (फ़ंक्शन (परिणाम) { console.log (JSON.stringify (परिणाम)) });' – Lucas

7

आप क्वेरी में raw: true उपयोग कर सकते हैं लेकिन यह हमेशा की तरह आप उम्मीद कर सकते व्यवहार नहीं करता है, विशेष रूप से संगठनों के साथ।

query({ 
    // ... 
    raw: true 
}).then(function(result) { 
    // Result is JSON! 
}); 

हालांकि इस मामले में जहां आप संघों का उपयोग कर रहे आप कुछ इस तरह मिल सकता है में:

{ 
    foo: true, 
    "associated.bar": true 
} 
इसके बजाय आप क्या उम्मीद कर सकते हैं की

:

{ 
    foo: true, 
    associated: { 
     bar: true 
    } 
} 
6

जब आप मॉडल को पुनः प्राप्त डेटाबेस से, आप परिणाम पर .get({ plain: true}) पर कॉल कर सकते हैं और यह आपके लिए रूपांतरण को संभालेगा। आप फ़ंक्शन कॉल का मान एक चर पर असाइन कर सकते हैं। उदाहरण

लिए

..).then(function(user){ var _user = user.get({ plain: true}); console.log(_user); //Should be valid json object });

आशा इस मदद करता है।

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