作者:Posion丶丨 | 来源:互联网 | 2022-12-05 19:04
所以,我有两个文件,一个是server.js
,另一个是db.js
该db.js
文件用猫鼬我的数据库交互,我用server.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. (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 但不能真正弥补它的任何问题.
编辑2:发现问题.这是一个网络问题,因为它说server.js
,我猜db.js
是指一些数据库方临时问题.我通过将我的IP地址列入白名单解决了这个问题.
1> gakeko betsi..:
我有
'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]:
我在MongoDB网站的“主页>安全部分>网络访问>添加IP”下面将我当前的IP添加到了白名单。
我希望这有帮助。
2> Wan Bachtiar..:
什么是TransientTransactionError
A TransientTransactionError
是一个被归类为临时的事务性错误,如果重试,则可能是成功的.
如果您使用的是MongoDB支持的驱动程序,则可能有两种原因导致代码出现此错误:
任何数据库命令错误,包括"errorLabels"字段中的"TransientTransactionError"错误标签.
在事务中运行除commitTransaction之外的任何命令时遇到任何网络错误.
MongoDB事务中的代码示例:retry-transaction show cased如何处理TransientTransactionError
.