首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NextJs TypeError:无法读取未定义的属性(读取'0')

NextJs TypeError:无法读取未定义的属性(读取'0')
EN

Stack Overflow用户
提问于 2022-03-31 16:20:16
回答 1查看 2.5K关注 0票数 0

我试图连接到Mongodb来定义连接、断开连接并在API中使用它。我收到这个无法读取未定义属性(读取'0)的TypeError。我使用控制台来检查是否包含与此Mongoose实例关联的所有连接的数组,但是是否只有0而不是连接列表。下面是代码片段。

代码语言:javascript
代码运行次数: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;

我得到的错误是这个

代码语言:javascript
代码运行次数:0
运行
复制
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 | }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-01 10:35:50

mongoose.connect()上没有连接类型。所以只需要删除我正在寻找的connections.readyState。

代码语言:javascript
代码运行次数:0
运行
复制
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;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71695987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档