簡體   English   中英

mongoose.connection 無法讀取未定義的屬性(讀取“on”)

[英]mongoose.connection Cannot read properties of undefined (reading 'on')

嘗試建立與 atlas 中的數據庫的連接時。 我得到Cannot read properties of undefined (reading 'on')

數據庫.js

import mongoose from "mongoose";
import dotenv from "dotenv";
mongoose.Promise = global.Promise;
mongoose.set("strictQuery", false);

dotenv.config()


let connection_uri = process.env.MONGODB_URI;
let cachedMongoConn = null;

export const connectToDatabase = () => {
  return new Promise((resolve, reject) => {
    //mongoose.Promise = global.Promise;
    mongoose.connection
    console.log(mongoose.connect)
      .on("error", (error) => {
        console.log("Error: connection to DB failed");
        reject(error);
      })
      .on("close", () => {
        console.log("Error: Connection to DB lost");
        process.exit(1);
      })
      // Connected to DB
      .once("open", () => {
        // Display connection information
        const infos = mongoose.connections;

        infos.map((info) =>
          console.log(`Connected to ${info.host}:${info.port}/${info.name}`)
        );
        // Return successful promise
        resolve(cachedMongoConn);
      });
    if (!cachedMongoConn) {
      cachedMongoConn = mongoose.connect(connection_uri, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        connectTimeoutMS: 60000,
        bufferCommands: false, 
      });
    } else {
      console.log("MongoDB: using cached database instance");
      resolve(cachedMongoConn);
    }
  });
};

注釋掉兩個 .on 我在.on.once同樣的錯誤

不知道為什么我在連接mongoose.connection時遇到問題,也許是 ES6 問題。

您提供的任何幫助將不勝感激。

你把調試

console.log(mongoose.connect)

在錯誤的地方。 它應該是

mongoose.connection
  .on("error", (error) => {

即使它在新的一行上, .on仍然指的是mongoose.connection 您不能只是在兩者之間插入一個新命令並期望它起作用。

更新

“無效方案”錯誤不相關,也不是將console.log放在代碼中任何位置的借口。 檢查錯誤的回溯,它在發生的地方有行號 - 把console.log放在那里,例如

if (!cachedMongoConn) {
  console.log(connection_uri)
  cachedMongoConn = mongoose.connect(connection_uri, {

連接 url 來自環境變量MONGODB_URI.env文件。 前者優先。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM