我正在嘗試連接到 Mongodb 來定義連接、斷開連接并在 API 中使用它。我收到無法讀取未定義屬性的 TypeError(讀取 '0)。我通過控制臺檢查是否包含與此 Mongoose 實體關聯的所有連接但只有 0 而不是連接串列的陣列。以下是代碼片段。
import mongoose from 'mongoose';
const connection = {};
async function connect() {
if (connection.isConnected) {
console.log('already connected');
}
if (mongoose.connections.length > 0) {
connection.isConnected = mongoose.connections[0].readyState;
console.log('cone', connection.isConnected);
if (connection.isConnected === 1) {
console.log('use previous connection');
return;
}
await mongoose.disconnect();
}
const dbConnect = mongoose.connect(process.env.MONGODB_URI, {
// useNewUrlParser: true,
useUnifiedTopology: true,
// useCreateIndex: true,
});
console.log('new connection');
connection.isConnected = dbConnect.connections[0].readyState;
}
async function disconnect() {
if (connection.isConnected) {
if (process.env.NODE_ENV === 'production') {
await mongoose.disconnect();
connection.isConnected = false;
} else {
console.log('not disconnected');
}
}
}
const db = { connect, disconnect };
export default db;
我得到的錯誤是這個
error - (api)\utils\db.js (25:49) @ Object.connect
TypeError: Cannot read properties of undefined (reading '0')
23 | });
24 | console.log('new connection');
> 25 | connection.isConnected = dbConnect.connections[0].readyState;
| ^
26 | console.log("cone1", connection.isConnected);
27 | }
uj5u.com熱心網友回復:
mongoose.connect() 上沒有型別作為連接。所以只需要洗掉我正在尋找的connections[0].readyState。
import mongoose from 'mongoose';
const connection = {};
async function connect() {
if (connection.isConnected) {
console.log('already connected');
return;
}
if (mongoose.connections.length > 0) {
connection.isConnected = mongoose.connections[0].readyState;
if (connection.isConnected === 1) {
console.log('use previous connection');
return;
}
await mongoose.disconnect();
}
const options = {
useUnifiedTopology: true,
useNewUrlParser: true,
};
const uri = process.env.MONGODB_URI;
const db = mongoose.connect(uri, options);
console.log('new connection');
connection.isConnected = db
if (!uri) {
throw new Error('Add your Mongo URI to .env');
}
}
async function disconnect() {
if (connection.isConnected) {
if (process.env.NODE_ENV === 'production') {
await mongoose.disconnect();
connection.isConnected = false;
} else {
console.log('not disconnected');
}
}
}
const db_export = { connect, disconnect };
export default db_export;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456275.html
