2016-01-28 13 views
8

Abbiamo un'applicazione nodejs + mongodb in esecuzione da diversi anni e in sviluppo su più macchine. Su macchina di un solo sviluppatore, sto vedendo l'erroreMongoDB in modalità Strict

MongoError: collection already exists 

ricerca di questo errore indica che questo si verifica quando si cerca di creare una collezione esistente solo se la collezione è in modalità rigorosa. Non invochiamo la modalità rigorosa di mongo in nessuna parte della nostra applicazione, e possiamo solo riprodurre questo errore su una macchina.

codice che causa questo errore è la seguente:

var mongo = require('mongodb'); 
mongo.MongoClient.connect(config.mongoConnectionString, {w:1}, function(err, db) { 
    db.createCollection('accounts', function(err, collection) { 
    // "err" here is the error message. 
    }); 
}); 

Esiste un modo per ignorare il valore di default di Mongo strict: false? Esiste un'opzione di configurazione globale che attiva la modalità rigorosa? Preferirei non modificare il codice per specificare strict: false per ogni raccolta solo per abilitare un singolo sviluppatore. Lo sviluppatore è in esecuzione mongo v3.2 modalità

+0

modificato sopra. Come ho già detto, questo codice è in esecuzione negli ambienti di staging e produzione per due anni e molti sviluppatori sono in grado di eseguire questo codice. Solo una singola macchina sembra avere questo problema. Se ignoriamo manualmente gli errori per questa raccolta, vediamo lo stesso errore per tutte le altre raccolte su questa macchina, il che mi porta a credere che esista un valore di configurazione per la versione installata di mongo stessa, piuttosto che un problema con il nostro codice. – aaaarrgh

+0

Lo sviluppatore ha installato anche l'mangusta per caso? – Jaco

+0

@JohnnyHK Una vecchia versione. 1.2.14 – aaaarrgh

risposta

1

È possibile disattivare 'rigorosa' utilizzando questo

var mongo = require('mongodb'); 
mongo.MongoClient.connect(config.mongoConnectionString, {w:1}, function(err, db) { 
    db.createCollection('accounts', {strict:false}, function(err, collection) { 
    // "err" here is the error message. 
    }); 
}); 

si può leggere di più su questo da here

+0

Ho già scoperto questo, sono riluttante a cambiare il codice stabile che viene eseguito in produzione al fine di risolvere un problema che si verifica solo sulla macchina di uno sviluppatore.Questa domanda riguarda la ricerca della configurazione che causa il comportamento errante su una macchina, piuttosto che interrompendo tutte le altre configurazioni di lavoro – aaaarrgh

Problemi correlati