You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何创建嵌套JSON文件将选课数据归属到登录用户名下

问题根源

你现有代码中使用.操作符访问对象属性时,会把loggedPerson1当做固定的字符串键名,而非读取loggedPerson1变量存储的动态用户名,所以无法适配不同登录用户的存储需求。JavaScript中要使用变量作为对象的动态键,需要用[]方括号语法。

修改步骤

  1. 初始化存储对象时,使用动态键创建对应用户的选课数组,同时新增用户不存在时的兜底逻辑,避免首次登录用户调用push方法时报错
  2. 存储选课数据时,改用方括号语法访问对应用户的数组

修改后完整代码

const fs = require('fs')
// 此处loggedPerson1为你已赋值的当前登录用户名字符串变量
let loggedPerson1 = '当前登录用户名'

var exists = fs.existsSync('RegisteredCourses.json'); 
let objRegister = {}
if(exists) {
    console.log("Loading");
    var data = fs.readFileSync('RegisteredCourses.json', 'utf-8');
    objRegister = JSON.parse(data);
}
else  {
    console.log('created new ')
    // 改用方括号动态设置用户名作为键
    objRegister[loggedPerson1] = [];
}

app.get('/RegisteredCourses',(req,res) =>{
    // 可直接返回当前用户的选课数据
    res.send(objRegister[loggedPerson1] || [])
})

app.post('/RegisteredCourses',(req,res) =>{
    var declaredCourse = {
        key: Date.now().toString(),
        CourseName : req.body.CourseName,
        CourseCode: req.body.CourseCode,
        StartDate:req.body.StartDate,
        EndDate:req.body.EndDate,
        Total_Fee: req.body.Fees,
        Delivery_Mode : req.body.Delivery_Mode,
        Description : req.body.Description,
        CourseType: req.body.CourseType
    }

    if(!declaredCourse.CourseName ){
        reply  ={
            msg:"Please enter data correctly"
        }
        res.send(reply)
    }
    else{
        // 新增兜底判断:如果当前用户没有对应的选课数组,先初始化
        if(!objRegister[loggedPerson1]) {
            objRegister[loggedPerson1] = []
        }
        // 改用方括号动态访问对应用户的选课数组
        objRegister[loggedPerson1].push(declaredCourse)

        let data = JSON.stringify(objRegister, null, 2);

        fs.writeFile('RegisteredCourses.json',data,finished);

        console.log('RegisteredCourses updated')
 
        function finished(err){
            reply = {
                status:"Success"
            }
            res.send(reply)
            console.log(reply)
        }
    }
})

内容的提问来源于stack exchange,提问作者Agyapal Dhanoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:27:02