首页 > 解决方案 > 使用 Nodejs 用新值更新空 JSON 数组

问题描述

背景

我目前正在创建一个跟踪系统,旨在跟踪从我们的技术人员那里发送和接收的零件。当我们需要将零件发送给技术人员时,就是我们开始跟踪的时候。与接收它们的技术人员一起发送的部件的值被插入到我的数据库中的一个表中,其余的值被初始化为空值。一旦我们从技术人员那里收到旧零件,我们就会更新必要的字段并更新表中的值。

问题

正如我之前所说,当我在表中插入一个新行时,我需要为我的一些字段初始化空值,其中包括PartsReceivedJSON 类型的列。我基本上将它初始化为一个空数组。我面临的问题是提出一个解决方案,以便在收到旧零件后更新表中的此列。我知道JSON_ARRAY_INSERT()and JSON_ARRAY_APPEND(),但我只是不太确定如何编写一个可以实现我正在寻找的过程。

这是我希望我的PartsReceived列在更新后被格式化的方式

[]

[{"id":311},{"id":301},{"id":122}]

使用 Nodejs 调用我的程序

export const updateTracking = (obj) => {
    return new Promise(async (resolve, reject) => {        
        try {
            const updateItem = `UPDATE mydb.tracking SET JSON_ARRAY_INSERT()??? WHERE ID = '${obj.ID}'`

            const response = await db(updateTracking, `Updating Tracking`);
            resolve(response);
        } catch (e) {
            console.log("ERROR tracking.updateTracking: " + e);

            reject(e);
        } 
    });
};

我最初的想法是将所有部分放入列表中,然后创建一个 for 循环,该循环将为列表中的每个部分调用JSON_ARRAY_INSERT()or JSON_ARRAY_APPEND(),但是如果有一种方法可以一次将所有部分都放入其中而无需循环,那么将是我的首选方式。

我已经尝试在网上寻找解决方案,但我找不到任何帮助。如果有人知道我应该如何编写此程序,那么您将帮我一个大忙。提前致谢!

标签: mysqlnode.js

解决方案


推荐阅读