繁体   English   中英

无法读取节点/express JS 中未定义的属性 FindAll(),现有 mySQL DB

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM