У меня довольно странная проблема с NodeJS, require и mongoose. Я создал схему для модели пользователя, как это:Ошибка Mongoose, требующая модели
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let depositSchema = new Schema({
customer: String,
tyres : {
amount: { type: Number, min: 1, required : true},
tyreType : { type: String, required : true }
},
created : {
at : { type: Date, default : Date.now },
by : { type : Schema.ObjectId }
},
last_modified : {
at : { type: Date },
by : { type: Schema.ObjectId }
},
located_at : {
column: { type: String, required : true },
row: { type: String, required : true }
}
});
depositSchema.pre('save', function(next) {
let date = new Date();
this.last_modified.at = date;
if(!this.created.at) {
this.created.at = date;
}
next();
});
module.exports = mongoose.model('Deposit', depositSchema);
Таким образом, вы можете увидеть файл экспортирует модель мангуста. Если я требую этого файла в другой, как это:
let Deposit = require('../../models/deposit);
Все в порядке. Все работает, и у меня нет проблем с использованием модели и создания объектов из нее, чтобы сохранить ее в Монго.
Но если мне нужна модель, как это:
let Deposit = require('../../models/Deposit);
Я получаю эту ошибку из Монго:
/app/node_modules/mongoose/lib/index.js:376
throw new mongoose.Error.OverwriteModelError(name);
^
MongooseError: Cannot overwrite `Deposit` model once compiled.
точки ошибок на линии я требует модель.
Я искал похожие проблемы с требованием, но не нашел ничего полезного, что объясняет мою проблему. Та же проблема возникает с другой моделью, но в другом направлении в орфографии. Я очень смущен. Может быть, у кого-то была одна и та же проблема или она может объяснить, что происходит/произошло и что вызвало проблему.
Заранее спасибо.
Успешная неделя.
Спасибо @ Love-Kesh за ваш ответ. Он работает нормально. Я хотел бы знать, где фактическая разница между двумя способами получения модели? Тот, который я использовал, используется многими людьми, которые пишут это в своих блогах и учебниках. – W0RLDB47ANCE
Вы определили модель, используя mongoose.model («Депозит», depositSchema); нет необходимости повторять это снова. При использовании требуется, чтобы ваш файл выполнял выполнение каждый раз, когда вы когда-либо используете. Таким образом, способ получить это: let Deposit = mongoose.model («Депозит»); –
Хорошо, хорошо это знать. Большое спасибо за ваш ответ и объяснение. – W0RLDB47ANCE