相关疑难解决方法(0)

Mongoose/NextJS - 模型未定义/编译后无法覆盖模型

TL;DR 编辑:如果您来自 Google,这是解决方案:

module.exports = mongoose.models.User || mongoose.model("User", UserSchema);
Run Code Online (Sandbox Code Playgroud)

对于非 TL;DR 答案,请检查接受的答案。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我正在一个 NextJS 站点上工作,在后端我使用 Mongoose 和 Express。每当我使用 signUp 功能时,我都会在后端收到此错误:

{"name":"Test","hostname":"DESKTOP-K75DG72","pid":7072,"level":40,"route":"/api/v1/signup","method":"POST","errorMessage":"UserModel is not defined","msg":"","time":"2020-06-17T23:51:34.566Z","v":0}
Run Code Online (Sandbox Code Playgroud)

我怀疑这个错误是因为我在其他控制器中使用了 UserModel。这个错误直到我制作了一个新的控制器才发生。所以我的问题是,如何解决这个问题/如何在不同的控制器/中间件中使用相同的模型?

我认为这个问题与node.js相关- 一旦编译了 Mongoose这篇文章,就无法覆盖模型,我早些时候收到了这个错误,但不知何故设法修复了它。

编辑:错误在于模型/User.js,在预保存中间件中,未在级别定义 UserModel,如何验证用户是否已存在该用户名,如果存在,则拒绝新文档?

控制器/RegisterLogin.js [发生错误的地方]

const UserModel = require("../models/User");
// More packages...

async function signUp(req, res) {
  try {
    const value = await signUpSchema.validateAsync(req.body);
    const response = await axios({
      method: "POST",
      url: "https://hcaptcha.com/siteverify",
      data: qs.stringify({
        response: value.token,
        secret: process.env.HCAPTCHA,
      }),
      headers: {
        "content-type": …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js express next.js

8
推荐指数
2
解决办法
2116
查看次数

标签 统计

express ×1

mongodb ×1

mongoose ×1

next.js ×1

node.js ×1