Des*_*ogo 3 javascript node.js express sequelize.js
TypeError:无法读取undefined(expressjs)的属性'findAll'.
所有功能(续集)都不起作用.所有错误:无法读取属性'sequelize方法'...
module.exports = function (sequelize, DataTypes) {
var User = sequelize.define('user', {
email: {type: DataTypes.STRING(32), unique: true, allowNull: false},
});
return User;
};
Run Code Online (Sandbox Code Playgroud)
控制器:
models = require('./../models');
exports.index = function (request, response, next) {
models.User.findAll({attributes: ['id', 'username']});
};
Run Code Online (Sandbox Code Playgroud)
小智 7
我有同样的问题,下面的更改对我有用.这可能对将来的用户有用 -
当你使用sequelize模型时,你需要使用定义的模型类名,即"user"而不是"find"中的"User":
models = require('./../models');
exports.index = function (request, response, next) {
models.user.findAll({attributes: ['id', 'username']});
};
Run Code Online (Sandbox Code Playgroud)
"用户"是分配了续集定义的变量,并且在该模型定义之外无法识别."user"是要创建的表名以及sequelize模型类名,这需要在任何类型的db查询中使用.
您已经创建了两个sequelize 实例。第一个实例位于 models/index.js 第 12/14 行,第二个实例位于服务器脚本第 19 行。您启动第二个实例,但在模型中您尝试使用第一个实例。
您的 model/index.js 文件没问题。在您的服务器文件中添加
var database = require('path/to/models');
Run Code Online (Sandbox Code Playgroud)
将您的数据库开始更改为:
database.sequelize
.authenticate()
.then(function(err) {
console.log('Connection has been established successfully.');
}, function (err) {
console.log('Unable to connect to the database:', err);
});
并且您必须将“数据库”对象传递给您的控制器,而不是models = require('./../models');从控制器中您可以访问您的模型:database.User