首页 > 解决方案 > 将数据库和 API 数据结构化,使其在结构方面看起来完全相同

问题描述

我正在使用 nodejs 应用程序。我开发了一个虚拟 API,一旦我点击获取请求端点,响应就会在本地保存为 .txt 文件。该响应如下所示:

[["0",{"id":1,"name":"course1"}],["1",{"id":2,"name":"course2"}],["2",{"id":3,"name":"course3"}]];

代码如下所示:

app.get('/api/courses', (req, res) => {
    res.send(courses)

    const array_Of_Courses = [];

    for (var key in courses){
        if (courses.hasOwnProperty(key)){
            array_Of_Courses.push([key, courses[key]]);
        }
    }
    var write = fs.writeFile("Api.txt", JSON.stringify(array_Of_Courses), "utf-8", (err) => {

        if (err) return console.log(err);
        console.log(array_Of_Courses)
    })
});

另一方面,我有一个我查询的 mssql 数据库表,并将数据在本地保存为 .txt 文件。响应如下所示:

{
    "recordsets": [
        [
            {
                "id": 1,
                "Name": "course1"
            },
            {
                "id": 2,
                "Name": "course2"
            },
            {
                "id": 3,
                "Name": "course3"
            }
        ]
    ]}

检索数据库对象的代码如下所示:

sql.connect(config, function(err) {
        if (err) console.log(err);
        var request = new sql.Request()
        request.query('SELECT id, Name from api2', function(err, recordset) {
            if (err) console.log(err);
            res.send(recordset);
        
    var myData = recordset;
    var outputFilename = 'db.txt';
    fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err){
        if (err) {
            console.log(err);
        } else if (Object.values(outputFilename)){
            console.log(`Successfully added data to ${outputFilename}`)
        }       
    });

API 和数据库表都具有相同的字段。我想以这样一种方式格式化数据库记录,当我写入 .txt 文件时,API 响应的结构或外观由数据库表记录模拟。这样做的原因是,我想检查两个生成的文件是否具有相同的数据。如果不是,我想从中获取唯一值,并使用 sql 语句更新数据库。

标签: node.js

解决方案


推荐阅读