Express.js和Sequelize:没有定义模型
Express.js and Sequelize: does not define models
我正在使用express.js和sequelize开发小型应用程序。现在我有个问题。我学习了这个教程,并被卡住了。
我得到
TypeError: Cannot read property 'findAll' of undefined
对于
router.get('/news', function (req, res, next) {
models.Article.findAll().then(function(article) {
res.json(article);
});
});
我的型号:
'use strict';
module.exports = function(sequelize, DataTypes) {
var Article = sequelize.define('Article', {
title: DataTypes.STRING,
content: DataTypes.TEXT
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
});
return Article;
};
我通过github主持项目,任何代码都可以在那里看到。
谢谢你的帮助。
UPD:为路由/新闻添加了console.log(模型)。
错误在models/index.js
中。在那里你有:
...
.filter(function(file) {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
...
这排除了以.js
结尾的所有文件。将最终条件更改为file.slice(-3) === '.js'
意味着article.js不会被过滤掉。文章在Article.js.中定义
为了调试这一点,我在GET /news
的路由器功能中添加了以下行:
console.log('KEYS TO models: ' + JSON.stringify(Object.keys(models)));
这向我表明,模型的唯一成员是sequelize和sequelize:
这可能与命名约定有关,因为Sequelize为模型名称添加了复数。好的做法是在模型定义中使用复数名称,这样以后在代码中就不会上当受骗。
尝试在代码和模型声明中将Article更改为Articles。
调试后,我发现default models/index.js有一个错误。当它遍历模型文件夹中的文件时,过滤器中存在一个条件
(file.slice(-3) !== '.js')
如果文件的扩展名为.js,则返回false。修复到
(file.slice(-3) === '.js')
它会起作用的。祝你好运
完全正确的构造:
fs
.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(function(file) {
var model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
相关文章:
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 自定义指令中的AngularJS ng模型
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- 主干中的模型属性未定义
- 煎茶触摸 2 - 从商店自定义模型种群
- 删除Alfresco自定义模型中的特性值
- 主干.js - 如何在模板中使用自定义模型属性
- 如何在Qooxdoo中创建自定义模型?(用于列表)
- 使用自定义模型和异步加载的extJS4树网格的悲哀
- Express.js和Sequelize:没有定义模型
- 在JavaScript中定义模型属性-是否有必要
- EmberArrayControllers:是否可以在控制器中定义模型/内容
- Angular 2 -示例代码-定义模型属性Undefined
- 如何在angular中为动态创建的复选框定义模型
- '类型表'使用ORM(如ActiveRecord)为web api定义模型时(如BOOK_TYPE表)
- AngularJs:从非常大的搜索表单传递搜索条件到service - create自定义模型
- 在定义模型时,我应该使用Sequelize还是DataType ?
- 自定义模型请求
- Sencha extjs 4.1-可以在config中定义模型字段吗
- 使用自定义模型弹出确认表单提交