Sequelize: проверьте, существует ли таблица и пуста ли - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу проверить таблицу и, если таблица пуста, создать запись.

мой код:

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 ОТ About AS About;

Необработанный отказ SequelizeDatabaseError: Таблица 'mydb.about' didn ' не существует

как я могу решить эту проблему?

1 Ответ

0 голосов
/ 23 апреля 2020

Наконец я нашел ответ на свою проблему.

Я добавил .sunc() и создаю таблицу перед поиском. .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;
};
...