隐藏用户y 2024-07-29 15:19 采纳率: 64.9%
浏览 1

关于注册接口返回500状态码的相关问题

关于博客项目的登录接口测试总是状态码500,代码中导入的数据库,数据库模型index中包含User
附上终端截图和代码片段
登录接口核心代码如下

var express = require('express');
var router = express.Router();
// 引入数据库设计模型
let { } = require('../models/index');
// 登录请求
let jwt = require("jsonwebtoken");
router.get("/", function (req, res, next) {
  console.log(req.query);
  let { username, password } = req.query;
  // 若有此用户存在
  User.findOne({ username, password }).then((r) => {
    console.log(r);
  });
  //如果登录成功,返回jwt,并且在token中存入用户名
  if (req.query.username == "lisa" && req.query.password == "123456") {
    let token = jwt.sign({ username: "zhangsan" }, "tianxiadiyiwudi666", {
      expiresIn: '360s',
      algorithm: "HS256",
    });
    res.json({
      code: 1,
      msg: '登录成功 ',
      token,
    });
  } else {
    res.json({
      code: 0,
      msg: '登录失败',
    });
  }
});
module.exports = router;

引入的index文件代码如下


//引入模块
let mongoose = require('mongoose');
//连接数据库
mongoose.connect('mongodb://127.0.0.1/blog').then(res => {
    console.log('连接数据库成功');
}).catch((err) => {
    console.log("链接数据库失败");
});
//获取创建集合的模块
let Schema = mongoose.Schema;
//用户表
let userSchema = new Schema(
    {
        username: {
            type: String,
            unique: true,//唯一
            require: true,//必填
        },
        password: String,
        nickname: String,
        headImgUrl: String,
        userID: String,
    },
    {
        timestamps: true,//启用时间戳
    });
let User = mongoose.model("User", userSchema);

//文章表
let ArticleSchema = new Schema(
    {
        title: String,
        content: String,
        tag: String,
        //文章表中存入作者的id,关联了用户表中的id
        author: { type: Schema.Types.ObjectId, ref: 'User' },
        views: {
            type: Number,
            default: 0,
        },
    },
    {
        timestamps: true,
    },
)

//关联查询,虚拟字段
ArticleSchema.virtual("coms", {
    ref: "Comment",
    localField: "_id",
    foreignField: "article_id",
    justOne: false,
    count: true,
});
ArticleSchema.set("toObject", { virtuals: true });
ArticleSchema.set("toJSON", { virtuals: true });
let Article = mongoose.model("Article", ArticleSchema);
// 评论表
let CommentSchema = mongoose.Schema(
    {
        content: String,
        article_id: { type: Schema.Types.ObjectId, ref: "Article" },
        reply_user_id: { type: Schema.Types.ObjectId, ref: "User" },
    },
    {
        timestamps: true,
    }
);

var Comment = mongoose.model("Comment", CommentSchema);
module.exports = {
    Comment, Article, User
}

img

  • 写回答

1条回答 默认 最新

  • 何事_ 2024-07-29 15:19
    关注

    引自免费微信小程序:皆我百晓生

    你的问题似乎在于在登录接口代码中引用数据库模型的方式不正确,导致了 "User is not defined" 的错误。根据你提供的代码和错误信息,问题可能在于你在 users.js 文件中尝试使用 User 模型,但没有正确地导入它。你需要确保你已经正确地从 index 文件中导入了 User 模型。以下是修正后的代码:

    首先,确保你的 index.js 文件(也就是你提到的包含数据库模型的文件)已经正确导出 User 模型。根据你提供的代码片段,这一点似乎已经是正确的。然后,在你的 users.js 文件中,你需要修改导入 User 模型的方式。

    users.js 文件中,你应该这样导入 User 模型:

    const User = require('../models/index').User; // 确保路径正确指向你的index.js文件
    

    然后你可以在你的登录接口代码中使用 User 模型。以下是修正后的登录接口代码:

    var express = require('express');
    var router = express.Router();
    const User = require('../models/index').User; // 正确导入User模型
    
    // 登录请求
    let jwt = require("jsonwebtoken");
    router.get("/", function (req, res, next) {
      console.log(req.query);
      let { username, password } = req.query;
      // 若有此用户存在
      User.findOne({ username, password }).then((r) => {
        console.log(r);
      });
      //如果登录成功,返回jwt,并且在token中存入用户名
      if (req.query.username == "lisa" && req.query.password == "123456") {
        let token = jwt.sign({ username: "zhangsan" }, "tianxiadiyiwudi666", {
          expiresIn: '360s',
          algorithm: "HS256",
        });
        res.json({
          code: 1,
          msg: '登录成功 ',
          token,
        });
      } else {
        res.json({
          code: 0,
          msg: '登录失败',
        });
      }
    });
    module.exports = router;
    

    这样应该就可以解决你的问题了。如果还有任何问题,请继续提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月29日

悬赏问题

  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?