如何在sequalizejs LINUX环境中进行批量创建时维护顺序?

时间:2017-03-06 12:46:16

标签: javascript node.js database-design sequelize.js

我正在使用sequalizejs从nodejs创建数据库记录。我正在传递数据数组,并将其添加到数据库表中。 问题是传递的数据不会保存原样。订单不同。请在sequalizejs中进行批量创建时建议如何维护订单? 。 仅在LINUX环境中才会出现此问题。在Windows服务器中,它工作正常。

data - ["A","B","C","D"]
table row order - "B" , "D" , "C" , "A" 

每次运行订单都有所不同。

models.MyTable.bulkCreate(req.body, { individualHooks: true }).then(function (mydata) {
        result.status(200).json(mydata);
});

1 个答案:

答案 0 :(得分:1)

当您使用{ individualHooks: true }时,sequalize将为插入创建多个SQL查询。 所有这些查询都将并行运行(如Promise.all([insertQueries])。很可能您使用连接池进行数据库连接 - 这意味着您的所有查询将同时运行(受设置options.pool.max =默认值5限制)。  见https://github.com/sequelize/sequelize/blob/v3/lib/model.js#L2169

如果查询顺序对您很重要,请使用下一个

var mapSeries = require('bluebird').mapSeries;
mapSeries(req.body, (item) => models.MyTable.create(item))
 .then(function (mydata) {
      result.status(200).json(mydata);
 });