javascript - SEQUELIZE 不会通过插入一行来自动增加 id?
问题描述
问题:目前我可以使用 SEQUELIZE 和 node api post 方法在数据库表中插入一行。
但是,如果我尝试使用邮递员发送一个新的项目对象,程序只会用 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
}
推荐阅读
- python - WinError 10060] Flickr API 的连接尝试失败
- segmentation-fault - 嗨,任何可以请帮助我的人。提交此代码时出现分段错误。这是代码
- java - 找不到来源-YahooFinance.class
- spring-webflux - Spring webflux webclient中是否有类似于RestTemplate中的disableCookieManagement的方法
- javascript - 在 JSX 中映射时 React 函数调用不起作用
- python - StackedWidget 无法正常工作
- javascript - MathJax:是否可以仅突出显示特定元素而不是整个文档?
- android - 分页库仅在房间数据库中存储第一次获取的值
- php - PhpStorm:运行 PHP 服务器不起作用:找不到驱动程序
- c++ - 如何在 clang++ 中干净地进行格式化字符串连接