背景:
應(yīng)運(yùn)維要求卫玖,要把所有的阿里云MongoDB公網(wǎng)鏈接改為內(nèi)網(wǎng)鏈接谣旁,
操作是就是把
host: 'dds-xxxa-pub.mongodb.rds.aliyuncs.com'
改為
host: 'dds-xxxb.mongodb.rds.aliyuncs.com'
其他項(xiàng)目基本替換一下鏈接就完成了乳幸。
只有一個項(xiàng)目飞袋,切換之后連接不上蔗包,提示30秒超時魂挂。
踩坑經(jīng)歷:
換個服務(wù)器還是不行航厚,排除了服務(wù)器的問題;
換個MongoDB密碼還是不行锰蓬,排除了密碼的問題幔睬;
那就定位是這個項(xiàng)目的框架有問題了。
然后芹扭,抽離一個MongoDB鏈接的最小版本麻顶,發(fā)現(xiàn)還是有問題赦抖,代碼如下:testdb.cjs
// 導(dǎo)入所需的模塊
const mongoose = require('mongoose');
// 定義數(shù)據(jù)庫連接地址
const dbUrl = 'mongodb://localhost:27017/mydatabase';
// 連接數(shù)據(jù)庫
mongoose.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('成功連接到數(shù)據(jù)庫');
// 定義Detail表結(jié)構(gòu)
const detailSchema = new mongoose.Schema({
name: String,
age: Number,
email: String
});
// 創(chuàng)建Detail模型(相當(dāng)于數(shù)據(jù)表)
const Detail = mongoose.model('Detail', detailSchema);
// 創(chuàng)建一條新的數(shù)據(jù)
const newDetail = new Detail({
name: 'John Doe',
age: 25,
email: 'johndoe@example.com'
});
// 保存數(shù)據(jù)到數(shù)據(jù)庫
newDetail.save()
.then(() => {
console.log('數(shù)據(jù)保存成功');
// 關(guān)閉數(shù)據(jù)庫連接
mongoose.connection.close();
})
.catch(error => {
console.error('保存時發(fā)生錯誤:', error);
// 關(guān)閉數(shù)據(jù)庫連接
mongoose.connection.close();
});
})
.catch(error => {
console.error('數(shù)據(jù)庫連接失敗:', error);
});
執(zhí)行 node testdb.cjs
還是不生效,已經(jīng)放棄了辅肾。
后來把這個文件放到其他項(xiàng)目队萤,居然可以生效?矫钓!
所以要尔,定位到是mongoose在node代碼中的版本問題;
升級版本新娜,好了赵辕,over!