JavaScript - 从两个数据库中查询的特定

Posted

技术标签:

【中文标题】JavaScript - 从两个数据库中查询的特定【英文标题】:JavaScript - specific queried from two databases 【发布时间】:2022-01-21 06:28:59 【问题描述】:

我需要有关 javascript 任务的帮助。 如何从两个数据库中获取特定查询?

任务: 查看 index.js 文件 实现gradeOverview() 函数,它获取变量students 和 为每个学生评分并创建成绩概览。从而 学生数组中的每个元素都应投影到以下格式的对象: 学生:(students[i]),成绩:[(grades[j], grades[j+k], ...)]

这是我的函数,它访问两个数据库,应该根据“学生人数”一次从一个数据库中检索和显示一个值。

    function gradeOverview(students, grades) 
      const result = students.map((student) => [
        
          student: student,
          grade: grades.reduce((grades, grade) => 
            const student number = grade.studentnumber;
            if (grades[matriculationnumber] == null) grades[matriculationnumber] = [];
            grades[matriculationnumber].push(grade);
            return grades;
          ),
        ,
      ]);

  console.log(result);

  return result;

  // TODO: implement me

数据:

var students = [
        "matrikelnummer": 4636,
        "vorname": "Vérane",
        "nachname": "Voase"
    ]

var grades = [
            "id": 628,
            "matrikelnummer": 4636,
            "grade": "3,3"

        ,
        
            "id": 886,
            "matrikelnummer": 4636,
            "grade": "5,0"
        ]

输出:

"student": 
            "matrikelnummer": 4636,
            "vorname": "Vérane",
            "nachname": "Voase"
        ,
        "grades": [
            
                "id": 628,
                "matrikelnummer": 4636,
                "grade": "3,3"
            ,
            
                "id": 886,
                "matrikelnummer": 4636
                "grade": "3,6"
            
        ]
    ,

【问题讨论】:

【参考方案1】:

更新:小提琴链接https://jsfiddle.net/uzrodex3/

我希望我猜对了您放入gradeOverview 函数的传入数据。

const studentsQueryResponse = [
    
        name: "John Doe",
        studentNumber: 123
    ,
    
        name: "Johan Doe",
        studentNumber: 321
    ,
    
        name: "Jane Doe",
        studentNumber: 111
    
]
const gradesQueryResponse = [
    
        studentNumber: 123,
        grade: 1
    ,
    
        studentNumber: 123,
        grade: 3
    ,
    
        studentNumber: 321,
        grade: 5
    ,
    
        studentNumber: 123,
        grade: 1
    
]

在这种情况下你的函数会返回

[
   
      "student": 
         "name":"John Doe",
         "studentNumber":123
      ,
      "grade":[1,3,1]
   ,
     
      "student": 
         "name":"Johan Doe",
         "studentNumber":321
      ,
      "grade":[5]
   ,
   
      "student": 
         "name":"Jane Doe",
         "studentNumber":111
      ,
      "grade":[]
   
]

如果您想在数组中返回整个grade 对象,则只需删除从等级对象返回等级属性值的map

function gradeOverview(students, grades) 
    console.log("Input arguments", students, grades)

    const results = students.map((student) => 

        return 
            student: student,
            grade: grades
                .filter((gradeObject) => gradeObject.studentNumber === student.studentNumber)
                .map((gradeObject) => gradeObject.grade)
        
    );


    console.log("Results", results);
    
    return results;

然后你调用你的函数

gradeOverview(studenstQueryResponse, gradesQueryResponse)

【讨论】:

+ 对您的代码进行注释:1. 变量“matriculationnumber”在上下文中不存在,我猜它应该是“studentnumber” 2. Array.reduce 是如何工作的LINK。您可以使用 Array.reduce 而不是 Array.filter 但这种方法在我看来更具可读性 有适用于您更新数据的代码。 JSFIDDLE

以上是关于JavaScript - 从两个数据库中查询的特定的主要内容,如果未能解决你的问题,请参考以下文章

Javascript Regex 从两个不同格式的文本块中获取特定字符串

从 PHP 查询特定的 MongoDB 数组

根据查询中的特定分组插入两个表

如何从数据库中选择列表中的特定条目?

从 url 查询字符串中获取特定值

查询从两个表中获取数据并将它们一起返回