@dimka222
О, привет

Mongoose: OverwriteModelError: Cannot overwrite `UserReg` model once compiled, как решить?

Пишу боту первое сообщение, всё хорошо, пишу второе: OverwriteModelError: Cannot overwrite `UserReg` model once compiled. Прошу помощи! Вот код:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { 
		useUnifiedTopology: true,
		useNewUrlParser: true
	});

mongoose.Promise = global.Promise;	

exports.mongo_init = (vk_id, name) => {
	const SaveUser = new mongoose.Schema({
    	vk_id: Number,
		name: String,
		balance: Number
	}, { collection: 'AddressCol' });

	let user = {
		vk_id: vk_id,
   		name: name,
   		balance: 0
	}

   	const saveUser = mongoose.model('UserReg', SaveUser);

   	const saveUsers = async ( data = new saveUser(user), saveUsr = saveUser, id = vk_id) => {
		let checkUser = await saveUsr.findOne({ vk_id: id });
		if ( checkUser ) return console.log(checkUser);
   		let date = await data.save();
   		return console.log(date);
   	}
   	saveUsers();
};


Скрин ошибки:
600b4493cb34d239357642.png
  • Вопрос задан
  • 937 просмотров
Решения вопроса 1
@tex0
Первая ссылка в гугле

суть проблемы - модель UserReg должна быть определена только один раз, а у вас она определяется снова и снова при каждом новом запросе.

Думаю правильно будет как-то так:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { 
    useUnifiedTopology: true,
    useNewUrlParser: true
  });

mongoose.Promise = global.Promise;	


const SaveUser = new mongoose.Schema({
	vk_id: Number,
	name: String,
	balance: Number
}, 
{ 
	collection: 'AddressCol' 
});

const saveUser = mongoose.model('UserReg', SaveUser);
	
exports.mongo_init = (vk_id, name) => {

	let user = {
		vk_id: vk_id,
		name: name,
		balance: 0
	}

   	const saveUsers = async ( data = new saveUser(user), saveUsr = saveUser, id = vk_id) => {
    let checkUser = await saveUsr.findOne({ vk_id: id });
    if ( checkUser ) return console.log(checkUser);
   		let date = await data.save();
   		return console.log(date);
   	}
   	saveUsers();
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы