Node.js的sequelize:ER_NO_SUCH_TABLE

Min*_*Kim 10 node.js sequelize.js

我是sequelize和Node.js的新手.
我为测试续集编码,但出现错误"ER_NO_SUCH_TABLE:表'db.node_tests'不存在"
错误非常简单.
但是,我想从" node_test "表中获取数据.
我认为sequelize附加's'字符.

有我的源代码.

var Sequelize = require('sequelize');

var sequelize = new Sequelize('db', 'user', 'pass');
var nodeTest = sequelize.define('node_test',
        { uid: Sequelize.INTEGER 
         , val: Sequelize.STRING} );

nodeTest.find({where:{uid:'1'}})
    .success(function(tbl){
        console.log(tbl);
    });
Run Code Online (Sandbox Code Playgroud)

我已经创建了表"node_test",并使用mysql客户端插入数据.

我误解了用法吗?

Min*_*Kim 14

我找到了答案我自己的问题.

我在下面添加了Sequelize方法选项. {define:{freezeTableName:true}}

然后,sequelize不会在表名后添加's'字符.


sde*_*old 8

虽然答案很好,但我现在建议tableName在声明模型时使用该选项:

sequelize.define('node_test', { 
  uid: Sequelize.INTEGER,
  val: Sequelize.STRING
}, {
   tableName: 'node_test'
});
Run Code Online (Sandbox Code Playgroud)

http://docs.sequelizejs.com/manual/tutorial/models-definition.html


sde*_*old 6

Sequelize 默认使用传递的模型名称的复数形式。因此它将查找表“node_tests”或“NodeTests”。如果您愿意,它还可以为您创建表格。

nodeTest.sync().success(function() {
  // here comes your find command.
})
Run Code Online (Sandbox Code Playgroud)

如果表不存在,同步将尝试创建该表。您还可以删除现有表并使用sync({ force: true }). 检查命令行上的 SQL 命令以获取有关正在发生的事情的更多详细信息。