Ken428965 2023-03-08 21:36 采纳率: 53.9%
浏览 34
已结题

node.js,mongodb,浏览器控制台报错GET http://localhost:3000/users/63fdc6ed5ece35087ded4a9b 400 (Bad Request)

问题基本情况:
博客系统,服务器已启动成功,数据库连接成功,powershell没有报错,compass里也连接成功,可以正常显示数据库内容
当在chrome浏览器地址栏输入 http://localhost:3000/admin/index.html 回车,页面能正常显示内容,但控制台console那里显示 Failed to load resource: the server responded with a status of 404 :

img

刷新页面后,此报错自动消失了

接着该页面输入正确的用户名和密码后点击登录,能成功登录账户

浏览器控制台报错:

img

报错内容是GET http://localhost:3000/users/63fdc6ed5ece35087ded4a9b 400 (Bad Request)

浏览器network里显示:

img

img

报错内容为 {"message":""value" must be of type object"}

点击控制台里的 common.js:26 ,对应的代码内容为:

// 向服务器端发送请求 索要登录用户信息
$.ajax({
  type: 'get',
  url: '/users/' + userId,
  success: function (response) {
    $('.avatar').attr('src', response.avatar)
    $('.profile.name').html(response.nickName)
  }
});

服务端代码:

const express = require('express');
const mongoose = require('mongoose');
const path = require('path');
var session = require('express-session');
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: false
}));
mongoose.set('strictQuery', true);
mongoose.connect('mongodb://root:root@localhost:27017/alibaixiu?authSource=admin', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(() => console.log('数据库连接失败'));
require('./routes')(app);
app.listen(3000, () => console.log('服务器启动成功'));

尝试过的努力:
搜索过网上提供的解决办法,有的说报错404是因为服务器端漏写了客户端里的某个请求地址,但没有说漏了哪个地址,且应该在服务端的哪个位置写上漏掉的地址;有的说需要加上'Content-Type': 'application/json'就可以解决400 (Bad Request)的报错,但没有说要加在哪个位置。

需要解决的问题:
1、报错404,漏写了哪个地址,且应该在服务端的哪个位置写上漏掉的地址?
2、报错400 (Bad Request),'Content-Type': 'application/json'应该加在哪个位置?
3、如果以上两个方法都解决不了问题,请问还有什么方法可以解决?恳请展示代码说明,谢谢~

  • 写回答

3条回答 默认 最新

  • 程序yang 全栈领域优质创作者 2023-03-09 09:16
    关注

    可以尝试修改客户端代码如下:

    $.ajax({
      type: 'get',
      url: '/users/' + userId,
      contentType: 'application/json',
      success: function (response) {
        $('.avatar').attr('src', response.avatar)
        $('.profile.name').html(response.nickName)
      }
    });
    

    在服务器端代码中添加路由:

    app.get('/users/:userId', (req, res) => {
      const userId = req.params.userId;
      // 从数据库中获取 userId 对应的数据
      // ...
      // 返回数据
      res.json({ avatar: '...', nickName: '...' });
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 已采纳回答 3月9日
  • 创建了问题 3月8日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改