javascript - SEQUELIZE 插入行时不会自动递增 id?

标签 javascript node.js orm sequelize.js

问题: 目前我可以使用 SEQUELIZE 和 node api post 方法在数据库表中插入一行。

但是,如果我尝试使用 postman 发送一个新的项目对象,程序只会更新 ID 为 1 的第一行!

API.js

router.post("/project", async (req, res, next) => {

  if (req.body) {
    // validate req.body then...

    const project = await ProjectService.saveProject(req.body);

    res.status(200).send(project);
  }
});

项目服务.js
const { Projects, sequelize } = require("../models/ProjectModel");

class ProjectService {

  static async saveProject(project) {
    await sequelize.sync({ force: true }); // creates the Projects row (if doesn't exist in db)
    const projectBuilt = Projects.build({
      CompanyID: project.CompanyID,
      Name: project.Name,
      ContextID: project.ContextID,
      Latitude: project.Latitude,
      Longitude: project.Longitude,
      StateID: project.StateID,
      RegionID: project.RegionID,
      RadiusCovered: project.RadiusCovered,
      SubRegionID: project.SubRegionID,
      CommonWealth: project.CommonWealth
    });

    await projectBuilt.save();
    console.log("\n\n Project Saved to database!");

    return { project: projectBuilt };
  }
}

module.exports = ProjectService;

项目模型.js
// var database = require("./loaders/database"); /* Database depedency */

const { Sequelize, Model, DataTypes } = require("sequelize");

const sequelize = new Sequelize("new_rps", "root", "password", {
  dialect: "mysql",
  dialectOptions: {
    // Your mysql2 options here
  }
});

const Projects = sequelize.define(
  "Projects",
  {
    CompanyID: DataTypes.INTEGER,
    Name: DataTypes.TEXT,
    ContextID: DataTypes.TEXT,
    Latitude: DataTypes.INTEGER,
    Longitude: DataTypes.INTEGER,
    StateID: DataTypes.INTEGER,
    RegionID: DataTypes.INTEGER,
    RadiusCovered: DataTypes.INTEGER,
    SubRegionID: DataTypes.INTEGER,
    CommonWealth: DataTypes.INTEGER
  },
  {
    tableName: "Projects"
  }
);

module.exports = {
  Projects,
  sequelize
};

我想要的是:添加一个新行而不是更新 id 为 1 的第一行。在数据库中,我对表也有自动增量,仅供引用!有任何想法吗?

更新的模型 仍然不工作
const Projects = sequelize.define(
  "Projects",
  {
    ID: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true
    },
    CompanyID: DataTypes.INTEGER,
    Name: DataTypes.TEXT,
    ContextID: DataTypes.TEXT,
    Latitude: DataTypes.INTEGER,
    Longitude: DataTypes.INTEGER,
    StateID: DataTypes.INTEGER,
    RegionID: DataTypes.INTEGER,
    RadiusCovered: DataTypes.INTEGER,
    SubRegionID: DataTypes.INTEGER,
    CommonWealth: DataTypes.INTEGER
  },
  {
    tableName: "Projects"
  }
);

最佳答案

使用以下选项将 id 列添加到您的模型定义中。
这样 sequelize 将知道生成插入行的 id。

id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    primaryKey: true
}

关于javascript - SEQUELIZE 插入行时不会自动递增 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60083669/

相关文章:

.net - 从 WCF/ADO.NET 数据服务中的请求正文接收参数

java - 将 JoinColumn 参数 insertable 和 updateable 设置为 null

python - SQLalchemy 属性错误 : 'str' object has no attribute '_sa_instance_state'

javascript - useRef() 无效 Hook 调用 [NextJs]

javascript - 如何计算两个时间之间的差异

javascript - wrapAll() 只处理第一个元素?

javascript - 如何查找Node.js目录下的内置模块

node.js - mongodb如何加入集合

javascript - Firebase 后端 Node.js Nodmailer 'ENOTFOUND'

android - ormlite是否支持批量创建和更新、删除