![](/img/trans.png)
[英]Sequelize.js/Node.js/Express.js: Tasks.findAll()returns a TypeError:Cannot read property 'findAll' of undefined
[英]cannot read property FindAll() of undefined in node/express JS, existing mySQL DB
晚上好,我在我的 express JS 應用程序中遇到了這個錯誤,不知道如何解決它。 我正在使用現有的 mySQL 數據庫並嘗試從 myDB 數據庫中的 tbl_person 表中檢索項目。 我對此很陌生,我不太確定我做錯了什么。 我在網上看到的一些例子並不完全清楚,所以我需要一些幫助。
這是我的示例代碼:
db.config.js
module.exports = {
HOST: "127.0.0.1",
USER: "root",
PASSWORD: "password",
DB: "myDB"
};
person.model.js
module.exports = (sequelize, DataTypes) => {
const Person = sequelize.define('tbl_person', {
personID: {
type: DataTypes.STRING(36),
field: 'personId',
allowNull: false,
primaryKey: true,
},
accountname: {
type: DataTypes.STRING(50),
field: 'accountname',
allowNull: true,
},
password: {
type: DataTypes.STRING(100),
field: 'password',
allowNull: true,
},
nameprefix: {
type: DataTypes.STRING(20),
field: 'nameprefix',
allowNull: true,
},
firstname: {
type: DataTypes.STRING(50),
field: 'firstname',
allowNull: true,
},
middlename: {
type: DataTypes.STRING(50),
field: 'middlename',
allowNull: true,
},
lastname: {
type: DataTypes.STRING(50),
field: 'lastname',
allowNull: true,
},
})
return Person;
};
person.controller.js
const person = require("../models/person.model.js").Person;
module.exports = {
getPersons(req, res) {
person.findAll({
where: { isActive : 1 },
}).then(person => {
res.status(201).json({
person: person,
success: true,
message: "get person request successful."
});
}).catch(error => {
console.error("get person request failed: ", error);
res.status(500).send({
success: false,
message: "get person request failed: " + error
});
})
}
};
index.js
const person = require("../controllers/person.controller.js");
module.exports = app => {
app.get("/api", (req, res) =>
res.status(200).send({
message: "Welcome to my API!",
})
);
// ========================= Person Routes ========================= //
app.get("/api/person/get", person.getPersons);
};
服務器.js
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
require("./routes/index.js")(app);
app.get("*", (req, res) => {
res.status(404).send({
status: false,
message: "No matching route!"
});
});
//PORTS
const port = process.env.PORT || 3000;
// set port, listen for requests
app.listen(port, () => {
console.log(`Server is running on port ${port}.`);
});
您應該在使用它們之前注冊所有模型及其關聯。 您應該從 Sequelize 實例或持有所有注冊模型的 object 使用它們。
請參閱我的回答,了解如何注冊所有模型和關聯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.