В моем коде я создаю collections
динамически. После создания, если я хочу удалить, я могу его удалить. После этого, если я попытаюсь создать еще раз с тем же именем коллекции (модели), я получаю сообщение об ошибке:
OverwriteModelError: невозможно перезаписать yyy
модель после компиляции.
Как решить эту проблему?
schemamodel. js:
/* model.js */
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
function dynamicModel(suffix) {
var collsName = suffix.charAt(0).toUpperCase() + suffix.slice(1);
var newSchema = new Schema({
product_name: {
type: String
}
}, { versionKey: false });
return mongoose.model(collsName, newSchema, suffix);
}
module.exports = dynamicModel;
data.controller. js:
module.exports.newCollection = (req, res, next) => {
var collectionName = req.query.collectionName;
var NewModel;
mongoose.connection.db.listCollections().toArray(function(err, names) {
if (err) {
console.log(err);
} else {
names.forEach(function(e, i, a) {
if (e.name == collectionName.toLowerCase()) {
console.log("The collection already exists");
} else {
console.log("The collection not exists");
NewModel = require(path.resolve('./models/schemamodel.js'))(collectionName);
NewModel.create({}, function(err, doc) {});
}
});
}
});
}
//Delete collection
module.exports.deleteCategory = (req, res, next) => {
var deletecateName = req.query.deletecateName;
deletecateName = deletecateName.toLowerCase();
mongoose.connection.dropCollection(deletecateName, (error, result) => {
if (error) {
console.log('Collection is not dropped');
} else {
console.log('Collection dropped');
}
})
}