Javascript TypeError:无法读取属性';findAll';未定义的类型(expressjs)
TypeError:无法读取未定义(expressjs)的属性“findAll” 所有功能(sequelize)均不工作。所有错误:无法读取属性“sequelize method”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
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']});
};