在 node 中将乐观锁定设置为全局选项,sequelize

编程入门 行业动态 更新时间:2024-10-26 18:15:59

在 node 中将乐观锁定<a href=https://www.elefans.com/category/jswz/34/1770411.html style=设置为全局选项,sequelize"/>

在 node 中将乐观锁定设置为全局选项,sequelize

我正在尝试在我的节点项目中设置 sequelize,现在我有

//sequelize init
const { DataTypes } = Sequelize;
const sequelize = new Sequelize({
  database: database,
  username: user,
  host: server, 
  password: password,
  dialect: 'mssql',
  dialectOptions: {
    options: {
      useUTC: true,
      dateFirst: 1,
    }
  },
  define:{
      timestamps:false,
      paranoid:false,
      freezeTableName: true
  }
});

//and my Model 
  const User= sequelize.define('User', {
    // attributes
    id: {
      field:'Id',
      type: Sequelize.INTEGER,
      allowNull: false,
      primaryKey: true
    } ,
    startTime: {
      field:'startTime',
      type: Sequelize.DATE
    } 
  });

我尝试设置

version:true
以启用乐观锁定 我把它放在模型里

  const Vessel = sequelize.define('FDMData', {
    // attributes
    id: {
      field:'vesselId',
      type: Sequelize.INTEGER,
      allowNull: false,
      primaryKey: true
    } ,
    startTime: {
      field:'startTime',
      type: Sequelize.DATE
    } 
  },{
    version:true
   }
);

我得到

Unhandled rejection SequelizeDatabaseError: Invalid column name 'version'.

我还尝试在初始化时将其设置为全局

const { DataTypes } = Sequelize;
const sequelize = new Sequelize({
  database: database,
  username: user,
  host: server, 
  password: password,
  dialect: 'mssql',
  dialectOptions: {
    options: {
      useUTC: true,
      dateFirst: 1,
    }
  },
  define:{
      timestamps:false,
      paranoid:false,
      freezeTableName: true,
      version: true
  }
});

再一次,我得到

Unhandled rejection SequelizeDatabaseError: Invalid column name 'version'.

我错过了什么?我该如何解决这个问题?

谢谢

回答如下:

当您设置

version: true
并且您正在手动创建数据库结构时,sequelize expect to find a column 在表上命名为
version
:所以在表中添加一列
version INTEGER NOT NULL DEFAULT 0
。 您还可以根据需要命名版本控制列,只需传递一个字符串
version: "myVersionColumn"

如果让 sequelize 处理数据库结构的创建,它会为

FDMData
表生成一个 DDL,看起来像

CREATE TABLE IF NOT EXISTS FDMData (
    vesselId INTEGER NOT NULL , 
    startTime DATETIME, 
    version INTEGER NOT NULL DEFAULT 0, 
    PRIMARY KEY (vesselId)
)

你的代码工作得很好。例如

Vessel.sync().then(model=> {
// or sequelize.sync()
    console.log(model)
}).catch(error=> {
    console.log(error)
})

更多推荐

在 node 中将乐观锁定设置为全局选项,sequelize

本文发布于:2024-05-07 08:34:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755415.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:设置为   中将   全局   选项   乐观

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!