簡體   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