javascript - MSSQL 上 Sequelize.org 的批量更新

标签 javascript node.js sequelize.js

我有一个包含三个字段的表。

--------------------------------
  id_ram   |    value  |  um 
id_ram 是主键。

我正在设计一个带有 sequelize 的 Express API。我无法更新此表的多行。
我正在传递如下 json 数组。
[
  {"id_ram":"54","value":"11","um":"GB"},
  {"id_ram":"34","value":"22","um":"GB"},
  {"id_ram":"70","value":"33","um":"GB"}
]

这是我到目前为止所尝试的。
router.post('/update',function (req, res) {

    var api_name = middleware_name + " /update"; 

    // - Check if the input array is passed 
    if(req.body.array == undefined) {

        var jsonErrorResponse = api_manager.PrepareJSONResponse(api_name, "", "value of input parameter [array] is undefined");
        api_manager.WriteErrorLogFile(req,api_name,jsonErrorResponse,jsonErrorResponse);
        res.send(jsonErrorResponse);

        return;
    }
    else {
        var create_values_array = "";
        try {
            //Parse INPUT JSON Array
            create_values_array = JSON.parse(req.body.array);
        }
        catch (err) {

            //Raise SyntaxError
            var jsonErrorResponse = api_manager.PrepareJSONResponse(api_name,"",err.message);
            var jsonInternalError = api_manager.PrepareJSONResponse(api_name,"",err);
            api_manager.WriteErrorLogFile(req,api_name,jsonErrorResponse,jsonInternalError);

            //Send error Response
            res.send(jsonErrorResponse);
        }

        ObjectModel.bulkCreate(
            create_values_array
        , {updateOnDuplicate: ["id_ram"]})
        .then(created_objects => { // Notice: There are no arguments here, as of right now you'll have to...

            //Send Response and Log Action
            var jsonData = api_manager.PrepareJSONResponse(api_name,created_objects,"");
            api_manager.WriteInfoLogFile(req,api_name,jsonData);

            res.send(jsonData);

        }).catch (function (err) {

            //Write Error Log
            var jsonErrorResponse = api_manager.PrepareJSONResponse(api_name,"",err.message);
            var jsonInternalError = api_manager.PrepareJSONResponse(api_name,"",err);
            api_manager.WriteErrorLogFile(req,api_name,jsonErrorResponse,jsonInternalError);

            //Send error Response
            res.send(jsonErrorResponse);
        });
    }
});

我们如何在 MSSQL 的 sequelize orm 中实现像 bulkCreate 这样的 bulkUpdate ?

最佳答案

对于批量创建,您可以这样做。

//array of object to be inserted
const data = [
   {field1: "value1"}, {field2: "value2"}...
]

Model.bulkCreate(data, {returning: true}) //if you don't pass returning true it will not return the data
bulkCreate() 也可用于更新。
bulkCreate(data , {updateOnDuplicate : true })

关于javascript - MSSQL 上 Sequelize.org 的批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60644109/

相关文章:

javascript - 提醒用户在不保存表单更改的情况下离开页面时,避免使用表单字段

node.js - 覆盖 Node 中的 require() 行为

javascript - Node q promise 递归

javascript - 如何将种子值传递给 Sequelize 中的随机顺序函数

javascript - 单击 Material UI <Button/> 更改波纹颜色

javascript - 改善幻灯片效果

javascript - Sequelize 错误: Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]

node.js - 将 POST 方法与 Sequelize 结合使用

javascript - 返回最大累计利润

javascript - 是否有 Mongoose 连接错误回调