TypeError: 無法讀取 undefined (expressjs) 的屬性 'findAll'
TypeError: Cannot read property 'findAll' of undefined (expressjs)
TypeError: 無法讀取 undefined (expressjs) 的屬性 'findAll'。
所有功能(续集)都不起作用。所有错误:无法读取属性"续集方法"...
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']});
};
我遇到了同样的问题,下面的更改对我有用。这可能对未来的用户有用 -
当您使用续集模型时,您需要使用定义的模型类名称,即 findAll 行中的"user"而不是"User":
models = require('./../models');
exports.index = function (request, response, next) {
models.user.findAll({attributes: ['id', 'username']});
};
"用户"是为其分配续集定义的变量,并且在该模型定义之外无法识别。"user"是正在创建的表名以及续集模型类名,这需要在任何类型的数据库查询中使用。
您已经创建了两个续集实例。一个在模型/索引中.js在第 12/14 行中,第二个实例在第 19 行的服务器脚本中。你开始第二个实例,但在模型中你尝试使用第一个实例。
您的模型/索引.js文件正常。在服务器文件中添加
var database = require('path/to/models');
将数据库开始更改为:
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
你的model/index.js
看起来不错。在您的控制器中尝试findAll()
方法sequelize.sync().then(function () {
这是我解决问题的方法
注意:我里面没有
models/index.js
,而是有一个类似的db.js
文件 具有数据库连接脚本和续集对象的配置文件夹。
我的用户控制器.js将看起来像(工作代码):
var db = require('./../config/db'),
seq = db.seq,
Sequelize = db.Sequelize;
module.exports = function(app) {
app.get('/getUsers',function(req,res){
var Users = require('../models/UserModel')(app); //since i am binding to a single object - app
seq.sync().then(function () {
Users.findAll({
attributes: ['usr_code', 'usr_name']
}).then(function (users) {
users.forEach(function(user,index,arr){
console.log(user.usr_code);
});
});
});
});
}
希望这对你有帮助。 :)
我也有同样的问题,您需要检查您的表名就是这样。
当关系或关联未使用 DB 连接定义时,您可能会遇到此问题。
此错误是因为您打算在控制器完全连接到数据库之前在控制器中使用 Sequelise。
尝试使用 .then 或异步等待
前我刚刚遇到了同样的问题。
这就是我导入模型的方式:
const {product: Product, cartItem: CartItem} = require('../models');
- 无法导出函数expressjs/requestjs中的变量
- nodejs-expressjs上传图像并显示它们
- NodeJS expressJS使用multer和passport将文件上传并保存到MongoDB
- Expressjs/AngularJS:实现req-flash后出错
- 在post-expressjs之后持久化表单数据
- 如何使用ExpressJS(在主视图/根视图上)呈现带有参数的HTML视图
- TypeError:无法读取属性'findAll'的未定义
- Ember、JSONAPI适配器、JSONAPISerializer、findAll不可用
- Expressjs-将表单数组/括号字段解析为实际数组
- 如何在同一端口上使用ExpressJS和Socket.io
- 将数据从ExpressJS发送到AngularJS ERROR json
- 扩展expressjs-res属性
- ExpressJS/NodeJS/Promises:从promise链提前返回
- 为什么我的Mongoose findAll方法返回500错误.
- ExpressJS:奇怪的字符串比较
- Expressjs不知道如何处理多个用户
- 尝试在expressJS应用程序中使用haml咖啡时出现奇怪错误
- ExpressJs+Passport.js+MySQL身份验证
- expressjs:获取请求的url
- TypeError: 無法讀取 undefined (expressjs) 的屬性 'findAll'