2017-02-22 25 views
7

Aynı kalıcılık katmanını paylaşırken (sorguları içeren paylaşılan modül) mongoose kullanan birkaç nodejs dosyası vardır. (Hep aynı biri) bu cinleri birinde Koyu mongoose magic: "FindOne için geçersiz argüman"

rastgele (Haftada birkaç kez) firavunfaresi aşağıdaki hatayı alıyorum:

firavun faresi: findOne Geçersiz argüman()

Tüm sorguları kontrol ettik ve bunun nereden kaynaklandığını bulamadık. Hata çağrı yığını her seferinde farklıdır (belirli bir mongoose çağrısı bu soruna neden olur gibi görünüyor), bunun iş mantığına özgü olduğunu düşünmüyoruz.

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 firavunfaresi şikayetçi olduğu argümanı: hata tekrar ortaya durumda

bazı hata ayıklama yapmak için aşağıdaki günlüğü eklendi. log() her şey JSON.stringify() olacaktır.

Bu bu çağrı sonucu günlükleri biridir:

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

Şimdi bu nasıl conds aynı anda {} ve null olabilir ... bana daha karıştırır ?! Benim aradığım

Yanıtlar:

  • nasıl conds içeren nesnenin bu tür üretebilir?
  • Açıkça rastgele ve nadiren gerçekleşen bir hataya nasıl devam edersiniz?
  • Ne tür değerlerin olduğunu veya nereden geldiğini tanımlamak için daha fazla kayıt olabilir miyiz?

Herhangi bir fikir takdir edildi!

+0

Düğümün hangi sürümü çalışıyorsunuz? Bunu soruyorum çünkü rastgele bunu Node 7.4.0 ile ancak 6.9.2 ile değil. – Brett

+0

Yine Node 7 ile Node 7 ile Node 7 gizemli null sorgu nesneleri ile ilgisi gibi görünüyor başka bazı gerçekten endişe verici şeyler gördüm, yine Node 6 ile gözlemlemedi. – Brett

+0

En geçerli 7.x sürümleri üzerinde çalışıyoruz şimdi oldukça uzun bir süredir. Bir süre önce onunla çalışan mongoose elde etmek için bir çekme isteği yaptım. Garip bir şey, aynı düğüm sürümü ile çalışan diğer tüm oemons bu sorunu yok: -/ Bahşiş için teşekkürler! – patrickd

cevap

5

Bu, here düzeltmesi için PR ile birlikte bir node bug olabilir. Henüz bir sürümde yer almıyor.

Bu, işaretçiler ve v8'in çöp toplamalarına bağlı olduğu için güvenilir şekilde tekrarlanamaz. Sadece yukarı akışta olmasını beklemek zorundayım.