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'字符.
虽然答案很好,但我现在建议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
Sequelize 默认使用传递的模型名称的复数形式。因此它将查找表“node_tests”或“NodeTests”。如果您愿意,它还可以为您创建表格。
nodeTest.sync().success(function() {
// here comes your find command.
})
Run Code Online (Sandbox Code Playgroud)
如果表不存在,同步将尝试创建该表。您还可以删除现有表并使用sync({ force: true }). 检查命令行上的 SQL 命令以获取有关正在发生的事情的更多详细信息。