【问题标题】:Profile management: Node js and Express配置文件管理:Node js 和 Express
【发布时间】:2022-11-21 07:22:24
【问题描述】:

拜托,我需要使用 Node js 和 Express 框架创建一个后端应用程序,以从 json 文件获取发布和修改用户数据。说实话,我不知道如何管理 JSON 文件,我正在搜索信息,但我仍然有错误,所以我需要这个应用程序的帮助,我已经尝试过我在下面发布的一些代码。

功能如下:

  1. "/add" -> POST 方法 -> 该路由应该将随请求正文发送的数据添加到 post.json 文件中

    如果数据添加成功,那么你应该发送一个200的响应码

    这就是为什么我到现在为止。

    app.post("/add", function(req, resp){
    
     var jsonObject = req.body;
     var jsonFile = fs.readFileSync("post.json", "UTF8");
     var jsonArray = JSON.parse(jsonFile);
     jsonArray.push(jsonObject);
    
     jsonFile = JSON.stringify(jsonArray);
     resp.json(jsonFile);
     fs.writeFileSync("post.json",jsonFile,"utf-8");
    
    });
    
    1. "/view" -> GET 方法 -> 该路由有一个名为 id 的可选查询参数。如果请求没有传递查询参数,那么您应该从 get.json 文件中获取所有数据。如果某些 id 与请求查询参数一起传递,那么您应该发送 id 等于请求查询附带的 id 的用户的详细信息

    如果数据获取成功,那么你应该发送一个 200 的响应码

    这就是为什么我直到现在......

    var express = require('express');
    var url = require('url');
    var app = express();
    var fs = require('fs');
    
    app.get('/view', function(req, resp){
      var queryURL = url.parse(req.url, true).query;
      var jsonFile = fs.readFileSync("post.json", "UTF8");
      var data = JSON.parse(jsonFile);
    
      if(typeof queryURL.id === "undefined" || queryURL.id == 0){
        resp.json(data);
      }else{
        resp.json(data[queryURL.id-1]);
      }
    
    });
    
    app.listen(3000);
    
    1. /edit/:id -> PATCH 方法 -> 如果用户在 post.json 中的 id 等于请求 URL 附带的 id,则此路由应更新值。您可以更新用户的姓名、年龄和电子邮件。

    如果数据更新成功,那么你应该发送一个状态码 200

    在这种情况下,我不知道如何进行!!!

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    针对第三种情况尝试以下代码。

    3. /edit/:id -> PATCH 方法 -> 如果用户在 post.json 中的 id 等于请求 URL 附带的 id,则此路由应更新值。您可以更新用户的姓名、年龄和电子邮件。 如果数据更新成功,那么你应该发送一个状态码 200。

    app.patch("/edit/:id", function(req, res){
        let userID = req.params.id;
        let userFile = fs.readFileSync("post.json", "UTF-8");
        let userArray = JSON.parse(userFile);
        
        let reqUserObject = req.body;
    
        let newUserArray = userArray.map(user => {
            if (user.id === userID) {
                updatedUser = {...user, ...reqUserObject};
                return updatedUser;
            } else {
                return user;
            }
        });
        
        userFileData = JSON.stringify(newUserArray);
        res.json(userFileData);
        fs.writeFileSync("post.json", userFileData, "UTF-8");
    });
    

    【讨论】:

    • 通过添加更多关于代码的作用以及它如何帮助 OP 的信息,可以改进您的答案。
    【解决方案2】:

    Express:配置文件管理评估(壁画挑战) Post,Get,Patch函数如下

    const express = require("express");
    const fs = require("fs");
    
    //setting up the express router
    const app = express();
    
    app.use(express.json());
    
    //write the code for routes here
    app.post("/add", function(req, resp){
     var jsonObject = req.body;
     var jsonFile = fs.readFileSync("post.json", "UTF8");
     var jsonArray = JSON.parse(jsonFile);
     jsonArray.push(jsonObject);
     jsonFile = JSON.stringify(jsonArray);
     resp.json(jsonFile);
     fs.writeFileSync("post.json",jsonFile,"utf-8");
    });
    
    app.get('/view', function(req, resp) {
      
      const id = req.query.id;
      var jsonFile = fs.readFileSync("get.json", "UTF8");
      var data = JSON.parse(jsonFile);
      // return the whole data if query parameter wasn't provided
      if (!id) return resp.status(200).json(data)
    
      // you should use find instead of every to get the user data
      const user = data.find(user => {
        if (user.id === id) {
          return user;
        };
          return null;
      });
      // return the user otherwise return a 404 response
      return user ? resp.status(200).json([user]) : resp.status(404).json({message:"user not found"})
    });
    
    app.patch("/edit/:id", function(req, res){
        let userID = req.params.id;
        let userFile = fs.readFileSync("post.json", "UTF-8");
        let userArray = JSON.parse(userFile);
        
        let reqUserObject = req.body;
    
        let newUserArray = userArray.map(user => {
            if (user.id === userID) {
                updatedUser = {...user, ...reqUserObject};
                return updatedUser;
            } else {
                return user;
            }
        });
        
        userFileData = JSON.stringify(newUserArray);
        res.json(userFileData);
        fs.writeFileSync("post.json", userFileData, "UTF-8");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 2019-01-24
      • 2016-06-25
      相关资源
      最近更新 更多