首页 > 解决方案 > 插入行时出现“找不到表”错误。续集和nodejs

问题描述

当我尝试使用 User.create() 将用户导入数据库时​​,sequelize 出现错误,提示该表不存在。即使我在创建函数上方创建了一个表格行。我的目标是在不使用 .sync 函数的 .then() 函数的情况下添加用户。

我试图将同步功能放在等待中,因为我认为同步功能需要更长的时间才能完成。

// imports ...

// Connecting to database
// Creating ORM object
const db = new sequelize(format("%s://%s:%s@%s:%s/%s", gvars.db_soft, gvars.db_user, gvars.db_pass, gvars.db_host, gvars.db_port, gvars.db_daba));
db.authenticate().then(() => {
    console.log("Connection established.");
}).catch(err => {
    console.error(err);
});

// Define users table
const User = db.define("users", {
    firstName: {
        type: sequelize.STRING,
        allowNull: false
    },
    lastName: {
        type: sequelize.STRING,
        allowNull: false
    }}, { freezeTableName: true,
});
db.sync({ force: true }).then(() => { console.log("Table created."); });
User.create({
    firstName: "Milan",
    lastName: "Vjestica"
});

//...starting app

我希望将用户添加到表中。

标签: mysqlnode.jsdatabasesequelize.js

解决方案


您必须在 sequelize 中使用 promise,因为它是基于 promise 的 ORM,请尝试以下更改:

User.create({ firstName: "Milan",lastName: "Vjestica"}).then(function(user) 
{
    console.log(user.get('firstName'));
    console.log(user.get('lastName')); 
});

推荐阅读