簡體   English   中英

Mongoose model 導出時變為未定義

[英]Mongoose model become undefined when exported

我從此文件導出 model DemandeTransports:

//@/components/database/model/Schema.js
import { Schema } from "mongoose";
import mongoose from "mongoose";

const userSchema = new Schema({
  email: { type: String, index: true, unique: true, required: true },
  password: { type: String, required: true },
  role: { type: String, required: true },
  infos: Map,
});

const Users = mongoose.models?.user || new mongoose.model("user", userSchema);

const demandeTransportSchema = new Schema({
  date: { type: Date, required: true },
  user: { type: Object, required: true },
  values: { type: Object, required: true },
});

const DemandeTransports =
  mongoose.models?.demandeTransport ||
  new mongoose.model("demandeTransport", demandeTransportSchema);

console.log(DemandeTransports.findOne);
export { Users, DemandeTransports };

哪個日志(在服務器上):[功能:findOne]

但是當我嘗試在此文件中導入 model 時:

//@/lib/getAllDemandesFromUser.js
import connectMongo from "@/components/database/conn";
import { DemandeTransports } from "@/components/database/model/Schema";

export default function getAllDemandesFromUser(email) {
  console.log("JSON.stringify(DemandeTransports)");
  console.log(JSON.stringify(DemandeTransports));
  connectMongo().catch((error) =>
    res.status(500).json({
      error: "La connection à la bdd mongo a échoué avec l'erreur : " + error,
    })
  );
  const result = DemandeTransports.findOne({ "user.email": email });
  return result;
}

我收到 TypeError: components_database_model_Schema__WEBPACK_IMPORTED_MODULE_1 _.DemandeTransports.findOne is not a function

DemandeTransports 被記錄為未定義,我不明白為什么。

我剛剛明白:我的基本錯誤是我在客戶端嘗試連接到 mongodb,這是不可能的。 我將所有呼叫轉移到 getServerSideProps function 中的數據庫:

export async function getServerSideProps(context) {
  const session = await unstable_getServerSession(
    context.req,
    context.res,
    authOptions
  );
  // Fetch data from external API
  connectMongo().catch((error) =>
    console.log("Erreur lors de la connection à la bdd : " + error)
  );
  const result = await DemandeTransports.findOne({
    "user.email": session.user.email,
  });

  const result2 = result.toObject();
  console.log(result.toObject());
  // Pass data to the page via props
  return { props: { result2 } };
}

現在它工作得很好。

暫無
暫無

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

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