我正在使用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);
});
答案 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);
});