#mongoose #next.js #next-auth
#мангуст #next.js #далее-авт
Вопрос:
Я успешно настроил Next-Auth v4. Теперь я пытаюсь вставить данные с помощью мангуста и, похоже, не могу заставить его работать. В настоящее время я просто создаю базовую модель и вставляю ее в файл lib/mongodb.ts, как показано в примере выше. сервер просто отключается, когда я вызываю к нему api
Мне интересно, могу ли я использовать файл lib/mongodb.ts, как указано в примере Next-Auth, и использовать его с мангустом, чтобы иметь возможность выполнять операции CRUD с mongo atlas. если можно, как я должен использовать мангуста вместе с next-auth v4?
Спасибо
lib/mongodb.ts
import { MongoClientOptions } from "mongodb"; // This approach is taken from https://github.com/vercel/next.js/tree/canary/examples/with-mongodb import { MongoClient } from "mongodb"; // [CANNOT WORK] import "../server/models/demoModel"; const uri = process.env.MONGODB_URI!; const options = { useUnifiedTopology: true, useNewUrlParser: true, } as MongoClientOptions; let client; let clientPromise; if (!process.env.MONGODB_URI) { throw new Error("Please add your Mongo URI to .env.local"); } if (process.env.NODE_ENV === "development") { // In development mode, use a global variable so that the value // is preserved across module reloads caused by HMR (Hot Module Replacement). // todo global._mongoClientPromise //@ts-ignore if (!global._mongoClientPromise) { client = new MongoClient(uri, options); //@ts-ignore global._mongoClientPromise = client.connect(); } //@ts-ignore clientPromise = global._mongoClientPromise; } else { // In production mode, it's best to not use a global variable. client = new MongoClient(uri, options); clientPromise = client.connect(); } // Export a module-scoped MongoClient promise. By doing this in a // separate module, the client can be shared across functions. export default clientPromise as Promiselt;MongoClientgt;;
Демомодель.ts
import mongoose from "mongoose"; const { Schema, models, model } = mongoose; const DemoSchema = new Schema({ title: String, }); export default models.Demo || model("Demo", DemoSchema);