Итак, у меня есть два файла. Один - server.js
, а другой - db.js
. Файл db.js
взаимодействует с моим БД с помощью Mongoose, и я использую server.js
для вызова функций из db.js
.
db.js :
var mongoose = require('mongoose');
mongoose.connect('', { useNewUrlParser: true })
var Schema = mongoose.Schema;
module.exports = function () {
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
return db.once('open', function() {
console.log("Connected to DB")
var postschema = new Schema({
title: String,
intro: String,
body: String,
author: String,
timestamp: { type: Date, default: Date.now }
});
var post = mongoose.model('post', postschema);
return {
newPost(title, intro, body, author) {
var newpost = new post({
title: title,
intro: intro,
body: body,
author: author
})
},
getPostsAll() {
post.find({}, function (err, res) {
return (`Error:${err} Posts:${res}`)
})
}
}
})
}
И мой server.js вызывает три функции всего из db.js
Это
var DB = require('./db.js')
var db = DB()
db.getPostsAll()
db.newPost()
Я не понимаю, почему я получаю эту ошибку:
connection error: { MongoNetworkError: connection 4 to black-test-shard-00-01-ewyaf.mongodb.net:27017 closed
at TLSSocket.<anonymous> (E:\HTML\black-box\node_modules\mongodb-core\lib\connection\connection.js:276:9)
at Object.onceWrapper (events.js:272:13)
at TLSSocket.emit (events.js:185:15)
at _handle.close (net.js:541:12)
at TCP.done [as _onclose] (_tls_wrap.js:379:7)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }
Извините за тупой вопрос, но кто-нибудь может сказать мне, что здесь происходит? И что я делаю не так?
РЕДАКТИРОВАТЬ : Я нашел статью, связанную с этой проблемой: https://docs.mongodb.com/manual/core/transactions/#retry-transaction Но на самом деле ничего не могу из нее сделать.
EDIT 2 : обнаружена проблема. Это была проблема сети, так как она говорит MongoNetworkError
, и я думаю, TransientTransactionError
относится к некоторой временной проблеме на стороне базы данных. Я решил это, занеся в белый список мой IP-адрес.