mysql - Sequelize:检查表是否存在且为空
问题描述
我想检查一个表,如果表为空,则创建一条记录。
我的代码:
module.exports = (sequelize, DataTypes) => {
const About = sequelize.define("About",
{
id: {
type: DataTypes.BIGINT,
autoIncrement: true,
allowNull: false,
primaryKey: true,
},
title: DataTypes.STRING(150),
content: DataTypes.TEXT("medium"),
},
{
freezeTableName: true,
timestamps: false,
},
);
About.findAll()
.then(about => {
if (about.length === 0) {
About.create({
title: "About Us",
content: "Lorem ipsum dolor sit amet...",
});
}
});
return About;
};
但是当表不存在时,我收到此错误:
执行(默认): SELECT
id
,title
,content
FROMAbout
ASAbout
;未处理的拒绝 SequelizeDatabaseError:表 'mydb.about' 不存在
我该如何处理这个问题?
解决方案
我终于找到了我的问题的答案。
我在查找之前添加.sync()
并创建了表。两者都在.findOrCreate()
工作.findAll()
。
module.exports = (sequelize, DataTypes) => {
const About = sequelize.define("About",
{
title: DataTypes.STRING(150),
content: DataTypes.TEXT("medium"),
},
{
freezeTableName: true,
timestamps: false,
},
);
About.sync();
About.findOrCreate({
where: {id: 1},
defaults: {
title: "About Us",
content: "Lorem ipsum dolor sit amet...",
},
});
return About;
};
推荐阅读
- karate - 如何正确重用 karate-config.js 和 test-header.feature
- java - Java RGB 到 YCbCr 的转换公式产生错误的结果
- javascript - 替换嵌套 div 中的文本
- java - Kafka:按需消费所有消息
- axon - java.lang.IllegalArgumentException:无法解析值“gc-${spring.profiles.active}”中的占位符“spring.profiles.active”
- javascript - 存储一个 JavaScript 承诺
- excel - 关于不允许测试人员在 vba 的文本框中输入 2 位数字的按键
- python - Python3:无法从解析的数据中拆分单词
- ruby-on-rails - 使用 nokogiri 将内容中的链接替换为 rails 中的已处理链接
- apache - 持久的 Docker 卷