Javascript TypeError:无法读取属性';findAll';未定义的类型(expressjs)

Javascript TypeError:无法读取属性';findAll';未定义的类型(expressjs),javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,TypeError:无法读取未定义(expressjs)的属性“findAll” 所有功能(sequelize)均不工作。所有错误:无法读取属性“sequelize method” module.exports = function (sequelize, DataTypes) { var User = sequelize.define('user', { email: {type: DataTypes.STRING(32), unique: true, allowNull: false

TypeError:无法读取未定义(expressjs)的属性“findAll”

所有功能(sequelize)均不工作。所有错误:无法读取属性“sequelize method”

module.exports = function (sequelize, DataTypes) {
var User = sequelize.define('user', {
    email: {type: DataTypes.STRING(32), unique: true, allowNull: false},
});

return User;
};
控制器:

models  = require('./../models');

exports.index = function (request, response, next) {
    models.User.findAll({attributes: ['id', 'username']});
};

您已经创建了sequelize的两个实例。第12/14行的models/index.js中有一个实例,第19行的服务器脚本中有第二个实例。你们启动第二个实例,但在模型中你们尝试使用第一个实例

您的model/index.js文件正常。 在服务器文件中添加

var database = require('path/to/models');
将数据库开始更改为:


database.sequelize
.authenticate()
.then(功能(错误){
log('已成功建立连接');
},函数(err){
console.log('无法连接到数据库:',错误);
});


您必须将“数据库”对象传递给控制器,而不是
models=require('./../models')
并且您可以从控制器访问您的模型:
数据库。User

您的
模型/index.js
看起来不错。在控制器中,尝试
findAll()
内的方法
sequelize.sync()。然后(函数(){

这是我解决这个问题的方法

注意:我没有使用
models/index.js
而是使用了一个类似的
db.js
文件 包含dbconnection脚本和sequelize对象的配置文件夹

我的userController.js看起来像(工作代码):


希望这对您有所帮助。:

我也有同样的问题,下面的更改对我很有用。这可能对未来的用户有用-

当您使用sequelize模型时,您需要使用定义的模型类名,该类名在findAll行中是“user”而不是“user”:

models  = require('./../models');
exports.index = function (request, response, next) {
    models.user.findAll({attributes: ['id', 'username']});
};

“用户”是一个变量,sequelize定义被分配给该变量,并且在该模型定义之外无法识别它是正在创建的表名以及sequelize模型类名,这需要在任何类型的db查询中使用。

我也有同样的问题,您需要检查表名就是它。

如果没有使用db连接定义关系或关联,则可能会出现此问题。

请写下您的查询内容。/../models/index.js或如果您以非标准方式初始化模型,请改为编写。@KrzysztofSztompka,谢谢,请编写您的运行方式db@KrzysztofSztompka,app.js Hm,ReferenceError:exports.index(c:\webserver\data\htdocs\newcloudy\controllers\user.js:5:5)中未定义数据库如何将数据库对象从服务器脚本传递到控制器?itvar database=require('./../app.js')似乎有问题;和TypeError:无法读取未定义的属性“findAll”。不,您不能这样做。您在服务器脚本中运行控制器。您必须在服务器脚本中将数据库实例传递给控制器。请检查此项和“第二次编辑”。
models  = require('./../models');
exports.index = function (request, response, next) {
    models.user.findAll({attributes: ['id', 'username']});
};