【发布时间】:2020-11-25 03:06:08
【问题描述】:
TypeError: 无法读取未定义的属性“findAll”
findAll 函数出错,但Connection 成功。
并且数据库也以managers的名称创建。
- app.js
- 型号
- index.js
- 玛丽亚
- manager.model.js
- 斌
- www.js
models/index.js
const { Sequelize } = require('sequelize');
const manager = new Sequelize({
dialect: 'mariadb',
host: '127.0.0.1',
port: '13306',
username: 'xxx',
password: 'xxx',
database: 'test',
timezone: 'Asia/Seoul'
});
require('./maria/manager.model')(manager);
module.exports=manager;
models/maria/manager.model.js
const { DataTypes } = require('sequelize');
module.exports = (sequelize) => {
sequelize.define('manager', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: {
allowNull: false,
type: DataTypes.STRING,
}
}, {timestamps: true }).sync({force:false});
};
app.js
const express = require('express');
const app = express();
const db = require('./models');
console.log(`Checking database connection...`);
// It works!
db.authenticate().then(()=>{
console.log('Database connection OK!');
});
// It makes error!
const find_test = db.manager.findAll();
console.log(find_test);
【问题讨论】:
-
如错误所示,
db.manager未定义 -
您的
models/index.js导出manager,而不是具有manager属性的对象。你在哪里有const db = require('./models'),db已经是manager -
@Phill
const find_test = db.findAll();它会犯同样的错误
标签: javascript node.js express mariadb sequelize.js