我有一张三块地的桌子。
--------------------------------
id_ram | value | um id_ram是主键。
我正在用sequelize设计一个速成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的后缀orm中实现像bulkUpdate这样的bulkCreate?
发布于 2020-03-12 02:58:31
对于批量创建,您可以这样做。
//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 databulkCreate()也可以用于更新。
bulkCreate(data , {updateOnDuplicate : true })发布于 2020-03-16 09:56:50
Hello{updateOnDuplicate: true }引发错误,因为Server不支持此功能。
可以换一条路吗?
发布于 2021-06-04 02:38:00
您可以通过编写一个函数在循环中调用Sequelize 上插函数来实现这一点,如下所示:
const records = [
{ field1: 'value1', field2: 'value2' },
...
];
async function bulkUpsert(records) {
return Promise.all(
records.map((record) {
return Model.upsert(record);
})
);
}https://stackoverflow.com/questions/60644109
复制相似问题