#node.js #mongodb #mongoose #mongodb-atlas
#node.js #mongodb #mongoose #mongodb-atlas
Вопрос:
Я перехожу с localhost на использование mongodb-atlas для размещения моей базы данных. Я изменил строку подключения в своем приложении nodejs, но каждый раз, когда приложение должно создавать новый документ на сервере atlas, оно все еще создает его на localhost.
Я убедился, что новая строка подключения была везде. Я также попытался создать нового пользователя.
Код функции
const mongoose = require("mongoose");
const Report = require("../models/report.js")
const { mongoURL } = require('../config.json');
mongoose.connect(mongoURL, {useNewUrlParser: true});
module.exports = {
name: 'testreport',
description: 'test report',
args: true,
usage: '<user> <reason>',
async execute(message, args) {
let rUser = message.mentions.members.first();
let rreason = args;
const report = new Report({
_id: mongoose.Types.ObjectId(),
username: rUser.user.username,
userID: rUser.id,
reason: rreason,
rUsername: message.author.username,
rID: message.author.id,
time: message.createdAt
})
report.save()
.then(result => console.log(result))
.catch(err => console.log(err));
message.reply("that report has been saved!");
},
};
Код схемы
const mongoose = require("mongoose");
const { mongoURL } = require('../config.json');
mongoose.connect(mongoURL, {useNewUrlParser: true});
const reportSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
username: String,
userID: String,
reason: String,
rUsername: String,
rID: String,
time: String
}, { collection: 'Reports' })
module.exports = mongoose.model("Report", reportSchema);
Строка подключения:
«mongodb srv://user:pass@discordbot-rpuzu.mongodb.net/test ?Повторная запись = true»
Я ожидаю, что моя база данных atlas получит новый документ отчета, но он создается в моей базе данных localhost.
Редактировать: у меня получилось, но каждый раз, когда я запускаю приложение, я получаю
UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on first connect
Я не понимаю, почему принудительный запуск localhost устранил проблему и почему я все еще получаю предупреждение о том, что localhost не запущен.
Комментарии:
1. Что
console.log(mongoURL)
показывает?2. Он отображает правильный URL, который извлекается из конфигурации.
3. Ну, если он сохраняется в localhost db, у вас, очевидно, где-то неправильная строка подключения.
4. Вы остановили сервер и перезапустили его после обновления URI?
5.Вы два
mongoUrl
импортировали. глядя на этот импортconst Report = require("../models/report.js")
, кажется, что ваши файлы находятся в разных папках, но вашmongoUrl
импорт одинаковconst { mongoURL } = require('../config.json');
Вы уверены, что импортируете то же самоеconfig.json
?