javascript - 如何从续集制作 bulkCreate() 以不创建新数据而只覆盖现有数据
问题描述
我正在从一个 excel 文件中导入大量数据,并使用 sequelize 和 postgres 将这些数据映射到我的数据库中。我有下一个问题,例如,如果有人要修改 excel 文件并想重新上传文件,sequelize 将再次添加与以前相同的数据,并修改特定的文件。我使用updateOnDuplicate但它似乎不起作用。
bulkCreate 的代码:
for (let i = 0; i < sheets.length; i++) {
if (sheets[i] === "GPS Input") {
const GPSInputSheet = xslx.utils.sheet_to_json(
workbook.Sheets[workbook.SheetNames[i]]
);
uploadGPSInput(GPSInputSheet, GPSInputData);
GPSInputModel.bulkCreate(GPSInputData, {
updateOnDuplicate: ["SumOfCurrent"],
});
我的模型:
const Sequelize = require("sequelize");
module.exports = (sequelize, DataTypes) => {
return gpsInput.init(sequelize, DataTypes);
};
class gpsInput extends Sequelize.Model {
static init(sequelize, DataTypes) {
super.init(
{
ProjectName: {
type: DataTypes.STRING(255),
allowNull: false,
},
DGNumber: {
type: DataTypes.STRING(255),
allowNull: false,
},
Location: {
type: DataTypes.STRING(255),
allowNull: false,
},
CostCenter: {
type: DataTypes.STRING(255),
allowNull: false,
},
SumOfLastApproval: {
type: DataTypes.DOUBLE,
allowNull: true,
},
SumOfCurrent: {
type: DataTypes.DOUBLE,
allowNull: true,
},
Expected: {
type: DataTypes.DOUBLE,
allowNull: true,
},
DiffRealVsRBP: {
type: DataTypes.DOUBLE,
allowNull: false,
},
},
{
sequelize,
tableName: "gpsInput",
schema: "public",
timestamps: true,
indexes: [],
}
);
return gpsInput;
}
}
有人能告诉我我错过了什么吗?
解决方案
推荐阅读
- powershell - 需要帮助创建 PowerShell 脚本以清除 Active Directory 属性
- ios - Swift:如何正确解码 unicode 字符?
- performance - Powershell:使用“Out-File”写入较小的文件需要 30 倍的时间
- java - 以最快、最有效的方式获取二维矩阵的子矩阵
- swift - 为什么我不能将 subView 添加到我的 stackView 而不使 stackView 成为惰性变量?
- node.js - nodejs命令行应用程序的快速日志记录解决方案
- c# - 在列表\一组元素上执行条件
- flutter - 如何在 Flutter with Flushbar 中使用 AnimationController 重复动画?
- elixir - Elixir:混合 deps.get 请求失败(403)并且没有缓存副本
- r - 如何在R中将数据移动两个月?