简体   繁体   English

在使用 Axios 的 Node.js 代码上出现 Request failed 404 错误

[英]getting Request failed 404 error on Node.js code which uses Axios

I am trying to link 2 server files to perform some action with URL, by using Node.js + express + Axios我正在尝试使用 Node.js + express + Axios 链接 2 个服务器文件以使用 URL 执行某些操作

link structure is链接结构是

FE Client [UI (VUE) -> PostService.js] -> BE Server [index.js -> posts_users.js -> DB]

The situation now I got is...我现在的情况是...

  1. Enroll new user works perfectly(FE UI (vue) -> PostService.js(insert_Users_Post) -> BE posts_users.js(router.post('/'))注册新用户效果很好(FE UI (vue) -> PostService.js(insert_Users_Post) -> BE posts_users.js(router.post('/'))

  2. other two(modification and delete) is getting the following errors其他两个(修改和删除)出现以下错误

    main.js?attr=gU7jfEErMGN47FOrFiB547YfT_VvvSwaYNqc5Th-l4B1v8b4BwucNhxWmVsYhNG6uoWufyN_zukG_sameBaZuQ:1078 PATCH http://localhost:8080/User_Management/api/posts_users/6049b4cbc3c1a94668af9e64 404 (Not Found) main.js?attr=gU7jfEErMGN47FOrFiB547YfT_VvvSwaYNqc5Th-l4B1v8b4BwucNhxWmVsYhNG6uoWufyN_zukG_sameBaZuQ:1078 PATCH http://localhost:8080/User_Management/api/posts_users/6049b4cbc3c1a94668af9e64 404 (Not Found)

    vue.esm.js?a026:1897 Error: Request failed with status code 404 at createError (createError.js?2d83:16) at settle (settle.js?467f:17) at XMLHttpRequest.handleLoad (xhr.js?b50d:62) vue.esm.js?a026:1897 错误:在 XMLHttpRequest.handleLoad (xhr.js?b50d: 62)

the weird thing is..奇怪的是..

  1. on PostService.js code, I checked it receives '_id' value well [ex) _id = 6049a5238651e35bc0cf449c]在 PostService.js 代码上,我检查了它是否接收到 '_id' 值 [例如)_id = 6049a5238651e35bc0cf449c]
  2. and other UI option is also referencing a similar structure of code, but working well....和其他 UI 选项也引用了类似的代码结构,但运行良好....

Have any tips....to fix errors..?有任何提示....修复错误..?

here is my PostService.js code这是我的 PostService.js 代码

import axios from "axios";    
const url_users = "api/posts_users/";

class PostService {

  //Create users post 
  static insert_Users_Post(createdAt, userID, firstName, lastName, max_temp, phoneNum, emailAddr, department, deviceName, role, status) {
    return axios.post(url_users, {
      createdAt, userID, firstName, lastName, max_temp, phoneNum, emailAddr, department, deviceName, role, status
    });
  }

  //update users post
  static update_Users_Post(_id, createdAt, userID, firstName, lastName, max_temp, phoneNum, emailAddr, department, deviceName, role, status) {
    return axios.patch(url_users+ `${_id}`, {
      createdAt, userID, firstName, lastName, max_temp, phoneNum, emailAddr, department, deviceName, role, status
    });
  }

  //delete users post
  static delete_Users_Post(_id) {
    return axios.delete(`${url_users}${_id}`);
  }
}

and this is my posts_users.js code这是我的posts_users.js 代码

const express = require('express');
const mongodb = require('mongodb');
const router = express.Router();
var config = require('../../../config');

// Add User Post
router.post('/', async(req, res) => {
    const posts = await loadPostsCollection_Users();
    await posts.insertOne({         
        userID: req.body.userID,
        firstName: req.body.firstName, 
        lastName: req.body.lastName,               
        phoneNum: req.body.phoneNum,
        emailAddr: req.body.emailAddr,
        department: req.body.department,
        deviceName: req.body.deviceName,
        role: req.body.role,
        createdAt : req.body.createdAt,
        updatedAt : req.body.createdAt,
        createdVia:"Web",                
        status: req.body.status,            
        active: "false",
        max_temp: req.body.max_temp,
    });
    res.status(201).send();
});

// Modify User Post
router.patch('/:id', async(req, res) => {
    const posts = await loadPostsCollection_Users();
    await posts.updateOne(
        { "_id" : new mongodb.ObjectID(req.params.id) },
        {$set: {
            "userID": req.body.userID,
            "firstName": req.body.firstName, 
            "lastName": req.body.lastName,               
            "phoneNum": req.body.phoneNum,
            "emailAddr": req.body.emailAddr,
            "department": req.body.department,
            "deviceName": req.body.deviceName,
            "role": req.body.role,
            "updatedAt" : req.body.createdAt,
            "createdVia":"Web",                
            "status": req.body.status,            
            "active": "false",
            "max_temp": req.body.max_temp
        }},     
        { upsert: true }
    );
    res.status(201).send();
});
    
// Delete User Post
router.delete('/:id', async(req, res) => {
    const posts = await loadPostsCollection_Users();
    await posts.deleteOne({
        _id: new mongodb.ObjectID(req.params.id)
    });
    res.status(200).send();
});

async function loadPostsCollection_Users() {
    const client = await mongodb.MongoClient.connect(`mongodb://${config.DB_IPAddr}:${config.DB_PortNo}/tms`, {
        useNewUrlParser: true
    });
    return client.db('tms').collection('integrated_users');
}

module.exports = router;

and lastly this is my BE index.js code最后这是我的 BE index.js 代码

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');    
const app = express();

// Middleware
app.use(bodyParser.json());
app.use(cors());

const posts_users = require('./routes/api/posts_users');

app.use('/api/posts_users', posts_users);

// Handle production
if(process.env.NODE_ENV === 'production'){
    //Static folder
    app.use(express.static(__dirname + '/public/'));

    //Handle SPA
    app.get(/.*/, (req, res) => res.sendFile(__dirname + '/public/index.html'));
}

const port = process.env.PORT || 5002;
app.listen(port, () => console.log(`Server started on port ${port}`));

Please make sure base url appended properly during Axios call.请确保在 Axios 调用期间正确附加了基础 url。

const url_users = "api/posts_users/";常量 url_users = "api/posts_users/";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM