Найдите модель мангуста по названию модели

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

Я пытаюсь настроить разные модели с одной и той же схемой для поиска, но я сталкиваюсь с ошибкой, когда пытаюсь найти модель по имени, данному ей. Я получаю сообщение об ошибке «Схема не была зарегистрирована для модели «model1», но модель четко отображается в базе данных. Ниже приведен код для настройки модели:

 const model = mongoose.model(modelname, Schema) var doc = new model({var1, var2, var3}); doc.save().then((resp) =gt; {  return res.status(200).json(resp); })  

Ниже приведен код для повторного доступа к модели по другому маршруту:

 var model = mongoose.model(modelname, Schema);  

Проблема в том, что имя модели является переменной, поэтому я никогда не узнаю точную модель, к которой осуществляется доступ

изменить: схема

 const Schema = new Mongoose.Schema({  var1: String,  var2: String,  var3: String }, {  timestamps: {  createdAt: 'created_at',  updatedAt: 'updated_at'  } });  

Комментарии:

1. Не могли бы вы поделиться своей схемой? Особенно если в нем есть какие ref -то буквы «с»

2. там нет ссылок, в нем просто 3 строки

Ответ №1:

Не Правильно, Требуется Обновление
Я думаю, что когда вы используете var model = mongoose.model(modelname, Schema); мангуста, он зарегистрирует это в базе данных, чтобы вызвать дублирование ошибки с тем же именем модели.
И если вы хотите иметь больше моделей в одной схеме, я думаю, что вы используете другое имя модели
Если вы хотите подключиться к одной модели, вы можете использовать exports и require получить

 const User = mongoose.model('User', UserSchema); export default User; // other file import UserModel from "./userModel.js";  

Комментарии:

1. Привет! Я ценю ваш ответ. Я также попробовал const model = mongoose.model(имямодели);, что приводит к той же ошибке. Я не могу использовать экспорт или требовать, так как маршруты находятся на двух разных серверах, и, кроме того, имя модели меняется в зависимости от тела запроса.

2. спасибо,теперь у меня есть четкий ваш вопрос, я обновлю свой ответ, если у меня будет ответ.