Comment se débarrasser de Error: "OverwriteModelError: Impossible d'écraser le modèle` undefined` une fois compilé. "?
J'ai une méthode commune pour la mise à jour du document de collecte dans MongoDB?
Le code suivant est dans le nom de fichier Deleter.js
module.exports.MongooseDelete = function (schemaObj, ModelObject);
{
var ModelObj = new mongoose.Model("collectionName",schemaObj);
ModelObj.remove(ModelObject);
}
Et de l'invocation de la façon suivante dans mon fichier principal app.js:
var ModObj = mongoose.model("schemaName", schemasObj);
var Model_instance = new ModObj();
var deleter = require('Deleter.js');
deleter.MongooseDelete(schemasObj,Model_instance);
J'obtiens l'erreur suivante:
OverwriteModelError: Cannot overwrite `undefined` model once compiled.
at Mongoose.model (D:\Projects\MyPrjct\node_modules\mongoose\lib\index.js:4:13)
Je monte sur la 2e appel de la méthode..
S'il vous plaît laissez-moi savoir si quelqu'un a une solution.
source d'informationauteur Amol M Kulkarni
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez instancié
mongoose.Model()
sur le même schéma à deux reprises. Vous devez avoir créé chaque modèle une seule fois et à l'échelle mondiale pour objet d'obtenir une prise de eux quand le besoinJe suppose que vous déclarez différents modèles dans différents fichiers sous le répertoire
$YOURAPP/models/
index.js
A. js
B. js
dans votre app.js
Et quand vous en avez besoin
J'ai réussi à résoudre le problème comme ceci:
J'essaie d'éviter globals autant que possible, car tout est par référence, et les choses peuvent déraper. Ma solution
model.js
J'ai trouvé qu'il vaut mieux éviter mondiale et à l'exception de la remise-
En fait le problème n'est pas que
mongoose.model()
est instancié deux fois.Le problème est que le
Schema
est instancié plusieurs fois.Par exemple, si vous ne
mongoose.model("Model", modelSchema)
n fois et que vous utilisez la même référence sur le Schéma, ce ne serait pas un problème pour la mangouste.Le problème vient quand vous utilisez une autre référence de schéma sur le même modèle que j'ai.e
C'est la situation lorsque cette erreur se produit.
Si vous regardez le code source
(mongoose/lib/index.js:360)
c'est la caseC'est parce que nécessitent un Modèle à deux voies.
Commentaire//fichier de Modèle
//Semences de fichier
//fichier d'index
Maintenant, vous pouvez profiter
throw new mongoose.Error.OverwriteModelError(name)
Parce que vous avez besoin de Commentaires du modèle de deux manières différentes. Graines de fichiervar Comment = require('./models/Comment')
,fichier d'Indexvar Comment = require('./models/comment')