2017-02-22 8 views
7

हमारे पास कई नोडजेस डिमॉन्स हैं जो एक ही दृढ़ता परत साझा करने के दौरान मोंगोस का उपयोग करते हैं (क्वेरी वाले साझा मॉड्यूल)।डार्क मोंगोज़ जादू: "खोजने के लिए अवैध तर्क"

(समान एक हमेशा) इन डेमॉन में से एक में हम बेतरतीब ढंग से (कई बार एक सप्ताह) नेवला से निम्न त्रुटि मिलती है:

नेवला: findOne को अमान्य तर्क()

हमने सभी प्रश्नों की जांच की है और यह पता लगाने में सक्षम नहीं है कि यह कहां से आ सकता है। त्रुटि कॉल स्टैक हर बार अलग होती है (कोई विशिष्ट मोंगोज़ कॉल इस समस्या का कारण नहीं है) इसलिए हमें नहीं लगता कि यह व्यवसाय तर्क के लिए विशिष्ट है।

क्रम कुछ डिबगिंग ऐसा करने के लिए हम निम्न लॉगिंग जोड़ा मामले में त्रुटि फिर से होता है:

log({ 
    // What mongoose checks (both false -> the error). 
    isInstanceOfMQuery: conds instanceof mquery, 
    isObject: mquery.utils.isObject(conds), 
    // Trying to find out what this value is. 
    conds, 
    toString: Object.prototype.toString.call(conds) 
    inspect: util.inspect(conds, { showHidden: true, depth: null, showProxy: true }) 
}) 

conds तर्क यह है कि नेवला के बारे में शिकायत कर रहा है। लॉग() पूरी चीज JSON.stringify() करेगा।

यह लॉग कि यह कॉल से हुई में से एक है:

{ 
    "isInstanceOfMQuery": false, 
    "isObject": false, 
    "conds": {}, 
    "toString": "[object Null]" 
    "inspect": "{}", 
} 

अब यह मेरे confuses और भी ... कैसे conds {} और null एक ही समय में किया जा सकता है ?!

जवाब मैं तलाश कर रहा हूँ:

  • मैं कैसे उद्देश्य यह है कि conds शामिल इस तरह का पुन: पेश कर सकते हैं?
  • आप एक बग के साथ कैसे आगे बढ़ेंगे जो स्पष्ट रूप से यादृच्छिक रूप से और शायद ही कभी होता है?
  • क्या हम यह पहचानने के लिए लॉग इन कर सकते हैं कि किस तरह के मूल्य conds है या यह कहां से आता है?

किसी भी विचार की सराहना की!

+0

नोड का कौन सा संस्करण आप चल रहे हैं? मैं पूछता हूं क्योंकि मैंने इसे यादृच्छिक रूप से नोड 7.4.0 के साथ देखा है लेकिन 6.9.2 के साथ नहीं। – Brett

+0

मैंने कुछ अन्य वास्तव में खतरनाक सामान देखा जो ऐसा लगता था कि यह मोंडोज 4 के साथ नोड 7 में रहस्यमय रूप से शून्य क्वेरी ऑब्जेक्ट्स के साथ कुछ करने के लिए था, फिर से नोड 6 के साथ नहीं देखा गया। – Brett

+0

हम वर्तमान में 7.x संस्करणों पर चल रहे हैं अभी कुछ समय के लिए। मैंने थोड़ी देर पहले मोंगोज़ के साथ काम करने के लिए एक पुल अनुरोध किया था। अजीब चीज यह है कि हमारे द्वारा उसी नोड संस्करण के साथ चल रहे सभी अन्य डिमों में यह समस्या नहीं है: -/ टिप के लिए धन्यवाद! – patrickd

उत्तर

5

यह शायद node bug है पीआर के साथ here को ठीक करने के लिए। यह अभी तक एक रिलीज में शामिल नहीं है।

यह विश्वसनीय रूप से पुन: उत्पन्न नहीं होता है क्योंकि यह पॉइंटर्स और वी 8 के कचरे के संग्रह पर निर्भर करता है। इसे अपस्ट्रीम तय करने के लिए बस इंतजार करना होगा।

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